23b4031
From e4decda5e2cf3f6cd2a7a41b23fb68ccf91e3f23 Mon Sep 17 00:00:00 2001
23b4031
From: Kohei Yoshida <kyoshida@novell.com>
23b4031
Date: Sat, 12 Feb 2011 01:32:12 -0500
23b4031
Subject: [PATCH] Get correct current position when shift-page up and down. (fdo#34026)
23b4031
23b4031
When expanding a selection, we need to use the block end position
23b4031
as the "current" position instead of the current cursor position, as
23b4031
the cursor no longer moves during block selection.
23b4031
---
23b4031
 sc/source/ui/view/tabview2.cxx |   18 +++++++++++++++++-
23b4031
 1 files changed, 17 insertions(+), 1 deletions(-)
23b4031
23b4031
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
23b4031
index 3bc9a82..73207ff 100644
23b4031
--- a/sc/source/ui/view/tabview2.cxx
23b4031
+++ b/sc/source/ui/view/tabview2.cxx
23b4031
@@ -371,7 +371,23 @@ void ScTabView::GetPageMoveEndPosition(SCsCOL nMovX, SCsROW nMovY, SCsCOL& rPage
23b4031
 {
23b4031
     SCCOL nCurX;
23b4031
     SCROW nCurY;
23b4031
-    aViewData.GetMoveCursor( nCurX,nCurY );
23b4031
+    if (aViewData.IsRefMode())
23b4031
+    {
23b4031
+        nCurX = aViewData.GetRefEndX();
23b4031
+        nCurY = aViewData.GetRefEndY();
23b4031
+    }
23b4031
+    else if (IsBlockMode())
23b4031
+    {
23b4031
+        // block end position.
23b4031
+        nCurX = nBlockEndX;
23b4031
+        nCurY = nBlockEndY;
23b4031
+    }
23b4031
+    else
23b4031
+    {
23b4031
+        // cursor position
23b4031
+        nCurX = aViewData.GetCurX();
23b4031
+        nCurY = aViewData.GetCurY();
23b4031
+    }
23b4031
 
23b4031
     ScSplitPos eWhich = aViewData.GetActivePart();
23b4031
     ScHSplitPos eWhichX = WhichH( eWhich );
23b4031
-- 
23b4031
1.7.4
23b4031