sw/inc/crsrsh.hxx               |    4 ++--
 sw/source/core/crsr/crsrsh.cxx  |   14 +++++++++-----
 sw/source/core/crsr/crstrvl.cxx |    4 ++--
 3 files changed, 13 insertions(+), 9 deletions(-)

New commits:
commit d58bea0ffa2a2fe79103ab7aa743aea63e27a0fd
Author: Juergen Funk <juergen.funk...@cib.de>
Date:   Wed Sep 17 16:31:20 2014 +0200

    Fix fdo#38884 Improve Up/Down movement in writer
    
    
    - It was provided, but the X-Position was reset after the cursor Up/Down
    
    - But in the Table is the X-Position not right -> other bug
    
    Change-Id: I2d70b7dc4ffa1e2612330d9b30ea5d916f5a9439
    Reviewed-on: https://gerrit.libreoffice.org/11500
    Reviewed-by: Samuel Mehrbrodt <s.mehrbr...@gmail.com>
    Tested-by: Samuel Mehrbrodt <s.mehrbr...@gmail.com>

diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index 9308300..2fd9841 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -352,7 +352,7 @@ public:
     // start parenthesing, hide SV-Cursor and selected areas
     void StartAction();
     // end parenthesing, show SV-Cursor and selected areas
-    void EndAction( const bool bIdleEnd = false );
+    void EndAction( const bool bIdleEnd = false, const bool DoSetPosX = false 
);
 
     // basic cursor travelling
     long GetUpDownX() const             { return m_nUpDownX; }
@@ -453,7 +453,7 @@ public:
 #else
     void SttCrsrMove() { ++m_nCrsrMove; StartAction(); }
     void EndCrsrMove( const bool bIdleEnd = false )
-            { EndAction( bIdleEnd ); --m_nCrsrMove; }
+            { EndAction( bIdleEnd, true ); --m_nCrsrMove; }
 #endif
 
     /*
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 9a7fa97..608aff0 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -229,11 +229,16 @@ void SwCrsrShell::StartAction()
     SwViewShell::StartAction(); // to the SwViewShell
 }
 
-void SwCrsrShell::EndAction( const bool bIdleEnd )
+void SwCrsrShell::EndAction( const bool bIdleEnd, const bool DoSetPosX )
 {
     comphelper::FlagRestorationGuard g(mbSelectAll, StartsWithTable() && 
ExtendedSelectedAll(/*bFootnotes =*/ false));
     bool bVis = m_bSVCrsrVis;
 
+    sal_uInt16 eFlags = SwCrsrShell::CHKRANGE;
+    if ( !DoSetPosX )
+        eFlags |= SwCrsrShell::UPDOWN;
+
+
     // Idle-formatting?
     if( bIdleEnd && Imp()->GetRegion() )
     {
@@ -267,7 +272,7 @@ void SwCrsrShell::EndAction( const bool bIdleEnd )
             // Within a Basic action, one needs to update the cursor,
             // to e.g. create the table cursor. This is being done in
             // UpdateCrsr.
-            UpdateCrsr( SwCrsrShell::CHKRANGE, bIdleEnd );
+            UpdateCrsr( eFlags, bIdleEnd );
 
             {
                 // watch Crsr-Moves, call Link if needed, the DTOR is key here!
@@ -284,11 +289,10 @@ void SwCrsrShell::EndAction( const bool bIdleEnd )
         return;
     }
 
-    sal_uInt16 nParm = SwCrsrShell::CHKRANGE;
     if ( !bIdleEnd )
-        nParm |= SwCrsrShell::SCROLLWIN;
+        eFlags |= SwCrsrShell::SCROLLWIN;
 
-    UpdateCrsr( nParm, bIdleEnd );      // Show Cursor changes
+    UpdateCrsr( eFlags, bIdleEnd );      // Show Cursor changes
 
     {
         SwCallLink aLk( *this );        // watch Crsr-Moves
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 1860842..c956ece 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -87,12 +87,12 @@ void SwCrsrShell::MoveCrsrToNum()
     if( pFrm->IsVertical() )
     {
         aPt.setX(m_aCharRect.Center().getX());
-        aPt.setY(pFrm->Frm().Top() + m_nUpDownX);
+        aPt.setY(pFrm->Frm().Top() + GetUpDownX());
     }
     else
     {
         aPt.setY(m_aCharRect.Center().getY());
-        aPt.setX(pFrm->Frm().Left() + m_nUpDownX);
+        aPt.setX(pFrm->Frm().Left() + GetUpDownX());
     }
     pFrm->GetCrsrOfst( m_pCurCrsr->GetPoint(), aPt );
     if ( !m_pCurCrsr->IsSelOvr( nsSwCursorSelOverFlags::SELOVER_TOGGLE |
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to