You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/10/19 17:09:57 UTC

svn commit: r1400124 - in /incubator/ooo/trunk/main: sc/source/ui/drawfunc/fudraw.cxx sw/source/ui/docvw/edtwin.cxx

Author: alg
Date: Fri Oct 19 15:09:57 2012
New Revision: 1400124

URL: http://svn.apache.org/viewvc?rev=1400124&view=rev
Log:
#121236# Added support for fast move of objects with cursor keys (holding shift) for Writer and Calc (was alraedy in Draw/Impress)

Modified:
    incubator/ooo/trunk/main/sc/source/ui/drawfunc/fudraw.cxx
    incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx

Modified: incubator/ooo/trunk/main/sc/source/ui/drawfunc/fudraw.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sc/source/ui/drawfunc/fudraw.cxx?rev=1400124&r1=1400123&r2=1400124&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sc/source/ui/drawfunc/fudraw.cxx (original)
+++ incubator/ooo/trunk/main/sc/source/ui/drawfunc/fudraw.cxx Fri Oct 19 15:09:57 2012
@@ -504,6 +504,11 @@ sal_Bool __EXPORT FuDraw::KeyInput(const
 						nX *= aLogicSizeOnePixel.Width();
 						nY *= aLogicSizeOnePixel.Height();
 					}
+					else if(rKEvt.GetKeyCode().IsShift()) // #121236# Support for shift key in calc
+					{
+						nX *= 1000;
+						nY *= 1000;
+					}
 					else
 					{
 						// old, fixed move distance

Modified: incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx?rev=1400124&r1=1400123&r2=1400124&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx (original)
+++ incubator/ooo/trunk/main/sw/source/ui/docvw/edtwin.cxx Fri Oct 19 15:09:57 2012
@@ -965,6 +965,12 @@ void SwEditWin::FlushInBuffer()
 #define MOVE_RIGHT_SMALL    6
 #define MOVE_DOWN_SMALL     7
 
+// #121236# Support for shift key in writer
+#define MOVE_LEFT_HUGE      8
+#define MOVE_UP_HUGE        9
+#define MOVE_RIGHT_HUGE     10
+#define MOVE_DOWN_HUGE      11
+
 void SwEditWin::ChangeFly( sal_uInt8 nDir, sal_Bool bWeb )
 {
     SwWrtShell &rSh = rView.GetWrtShell();
@@ -987,11 +993,18 @@ void SwEditWin::ChangeFly( sal_uInt8 nDi
         rSh.GetFlyFrmAttr( aSet );
         RndStdIds eAnchorId = ((SwFmtAnchor&)aSet.Get(RES_ANCHOR)).GetAnchorId();
         Size aSnap;
+        bool bHuge(MOVE_LEFT_HUGE == nDir ||
+            MOVE_UP_HUGE == nDir ||
+            MOVE_RIGHT_HUGE == nDir ||
+            MOVE_DOWN_HUGE == nDir);
+
         if(MOVE_LEFT_SMALL == nDir ||
             MOVE_UP_SMALL == nDir ||
             MOVE_RIGHT_SMALL == nDir ||
             MOVE_DOWN_SMALL == nDir )
+        {
             aSnap = PixelToLogic(Size(1,1));
+        }
         else
         {
             aSnap = rSh.GetViewOptions()->GetSnapSize();
@@ -1003,6 +1016,12 @@ void SwEditWin::ChangeFly( sal_uInt8 nDi
                 aSnap.Height() = Max( (sal_uLong)1, (sal_uLong)aSnap.Height() / nDiv );
         }
 
+        if(bHuge)
+        {
+            // #121236# 567twips == 1cm, but just take three times the normal snap
+            aSnap = Size(aSnap.Width() * 3, aSnap.Height() * 3);
+        }
+
         SwRect aBoundRect;
         Point aRefPoint;
         // OD 18.09.2003 #i18732# - adjustment for allowing vertical position
@@ -1026,15 +1045,31 @@ void SwEditWin::ChangeFly( sal_uInt8 nDi
         switch ( nDir )
         {
             case MOVE_LEFT_BIG:
-            case MOVE_LEFT_SMALL: aTmp.Left( aTmp.Left() - nLeft ); break;
+            case MOVE_LEFT_HUGE:
+            case MOVE_LEFT_SMALL: aTmp.Left( aTmp.Left() - nLeft ); 
+                break;
+            
             case MOVE_UP_BIG:
-            case MOVE_UP_SMALL: aTmp.Top( aTmp.Top() - nUp ); break;
-            case MOVE_RIGHT_SMALL: if( aTmp.Width() < aSnap.Width() + MINFLY ) break;
-                    nRight = aSnap.Width(); // kein break
-            case MOVE_RIGHT_BIG: aTmp.Left( aTmp.Left() + nRight ); break;
-            case MOVE_DOWN_SMALL: if( aTmp.Height() < aSnap.Height() + MINFLY ) break;
-                    nDown = aSnap.Height(); // kein break
-            case MOVE_DOWN_BIG: aTmp.Top( aTmp.Top() + nDown ); break;
+            case MOVE_UP_HUGE:
+            case MOVE_UP_SMALL: aTmp.Top( aTmp.Top() - nUp ); 
+                break;
+            
+            case MOVE_RIGHT_SMALL: 
+                if( aTmp.Width() < aSnap.Width() + MINFLY ) 
+                    break;
+                nRight = aSnap.Width(); // kein break
+            case MOVE_RIGHT_HUGE: 
+            case MOVE_RIGHT_BIG: aTmp.Left( aTmp.Left() + nRight ); 
+                break;
+
+            case MOVE_DOWN_SMALL: 
+                if( aTmp.Height() < aSnap.Height() + MINFLY ) 
+                    break;
+                nDown = aSnap.Height(); // kein break
+            case MOVE_DOWN_HUGE: 
+            case MOVE_DOWN_BIG: aTmp.Top( aTmp.Top() + nDown ); 
+                break;
+
             default: ASSERT( sal_True, "ChangeFly: Unknown direction." );
         }
         sal_Bool bSet = sal_False;
@@ -1142,33 +1177,38 @@ void SwEditWin::ChangeDrawing( sal_uInt8
 
     long nX = 0;
     long nY = 0;
-    sal_Bool bOnePixel = sal_False;
+    const sal_Bool bOnePixel(
+        MOVE_LEFT_SMALL == nDir || 
+        MOVE_UP_SMALL == nDir || 
+        MOVE_RIGHT_SMALL == nDir || 
+        MOVE_DOWN_SMALL == nDir);
+    const sal_Bool bHuge(
+        MOVE_LEFT_HUGE == nDir || 
+        MOVE_UP_HUGE == nDir || 
+        MOVE_RIGHT_HUGE == nDir || 
+        MOVE_DOWN_HUGE == nDir);
     sal_uInt16 nAnchorDir = SW_MOVE_UP;
     switch(nDir)
     {
         case MOVE_LEFT_SMALL:
-            bOnePixel = sal_True;
-            //no break;
+        case MOVE_LEFT_HUGE:
         case MOVE_LEFT_BIG:
             nX = -1;
             nAnchorDir = SW_MOVE_LEFT;
         break;
         case MOVE_UP_SMALL:
-            bOnePixel = sal_True;
-            //no break;
+        case MOVE_UP_HUGE:
         case MOVE_UP_BIG:
             nY = -1;
         break;
         case MOVE_RIGHT_SMALL:
-            bOnePixel = sal_True;
-            //no break;
+        case MOVE_RIGHT_HUGE:
         case MOVE_RIGHT_BIG:
             nX = +1;
             nAnchorDir = SW_MOVE_RIGHT;
         break;
         case MOVE_DOWN_SMALL:
-            bOnePixel = sal_True;
-            //no break;
+        case MOVE_DOWN_HUGE:
         case MOVE_DOWN_BIG:
             nY = +1;
             nAnchorDir = SW_MOVE_DOWN;
@@ -1187,7 +1227,14 @@ void SwEditWin::ChangeDrawing( sal_uInt8
             aSnap.Height() = Max( (sal_uLong)1, (sal_uLong)aSnap.Height() / nDiv );
 
         if(bOnePixel)
+        {
             aSnap = PixelToLogic(Size(1,1));
+        }
+        else if(bHuge)
+        {
+            // #121236# 567twips == 1cm, but just take three times the normal snap
+            aSnap = Size(aSnap.Width() * 3, aSnap.Height() * 3);
+        }
 
         nX *= aSnap.Width();
         nY *= aSnap.Height();
@@ -1578,19 +1625,23 @@ void SwEditWin::KeyInput(const KeyEvent 
                 switch( rKeyCode.GetModifier() | rKeyCode.GetCode() )
                 {
                 case KEY_RIGHT | KEY_MOD2:
+                case KEY_RIGHT | KEY_SHIFT:
                     eKeyState = KS_ColRightBig;
                     eFlyState = KS_Fly_Change;
-                    nDir = MOVE_RIGHT_SMALL;
+                    nDir = rKeyCode.GetModifier() & KEY_SHIFT ? MOVE_RIGHT_HUGE : MOVE_RIGHT_SMALL;
                     goto KEYINPUT_CHECKTABLE;
 
                 case KEY_LEFT | KEY_MOD2:
+                case KEY_LEFT | KEY_SHIFT:
                     eKeyState = KS_ColRightSmall;
                     eFlyState = KS_Fly_Change;
-                    nDir = MOVE_LEFT_SMALL;
+                    nDir = rKeyCode.GetModifier() & KEY_SHIFT ? MOVE_LEFT_HUGE : MOVE_LEFT_SMALL;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_RIGHT | KEY_MOD2 | KEY_SHIFT:
                     eKeyState = KS_ColLeftSmall;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_LEFT | KEY_MOD2 | KEY_SHIFT:
                     eKeyState = KS_ColLeftBig;
                     goto KEYINPUT_CHECKTABLE;
@@ -1598,26 +1649,33 @@ void SwEditWin::KeyInput(const KeyEvent 
                 case KEY_RIGHT | KEY_MOD2 | KEY_MOD1:
                     eKeyState = KS_CellRightBig;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_LEFT | KEY_MOD2 | KEY_MOD1:
                     eKeyState = KS_CellRightSmall;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_RIGHT | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
                     eKeyState = KS_CellLeftSmall;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_LEFT | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
                     eKeyState = KS_CellLeftBig;
                     goto KEYINPUT_CHECKTABLE;
 
                 case KEY_UP | KEY_MOD2:
+                case KEY_UP | KEY_SHIFT:
                     eKeyState = KS_ColBottomSmall;
                     eFlyState = KS_Fly_Change;
-                    nDir = MOVE_UP_SMALL;
+                    nDir = rKeyCode.GetModifier() & KEY_SHIFT ? MOVE_UP_HUGE : MOVE_UP_SMALL;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_DOWN | KEY_MOD2:
+                case KEY_DOWN | KEY_SHIFT:
                     eKeyState = KS_ColBottomBig;
                     eFlyState = KS_Fly_Change;
-                    nDir = MOVE_DOWN_SMALL;
+                    nDir = rKeyCode.GetModifier() & KEY_SHIFT ? MOVE_DOWN_HUGE : MOVE_DOWN_SMALL;
                     goto KEYINPUT_CHECKTABLE;
+
 //              case KEY_UP | KEY_MOD2 | KEY_SHIFT:
 //                  eKeyState = KS_ColTopBig;
 //                  goto KEYINPUT_CHECKTABLE;
@@ -1628,12 +1686,15 @@ void SwEditWin::KeyInput(const KeyEvent 
                 case KEY_UP | KEY_MOD2 | KEY_MOD1:
                     eKeyState = KS_CellBottomSmall;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_DOWN | KEY_MOD2 | KEY_MOD1:
                     eKeyState = KS_CellBottomBig;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_UP | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
                     eKeyState = KS_CellTopBig;
                     goto KEYINPUT_CHECKTABLE;
+
                 case KEY_DOWN | KEY_MOD2 | KEY_SHIFT | KEY_MOD1:
                     eKeyState = KS_CellTopSmall;
                     goto KEYINPUT_CHECKTABLE;