[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 2 commits - sw/source

Oliver-Rainer Wittmann orw at apache.org
Thu Jun 27 03:07:37 PDT 2013


 sw/source/core/edit/eddel.cxx |   21 +++++++--------------
 sw/source/ui/wrtsh/delete.cxx |   12 +++++++++++-
 sw/source/ui/wrtsh/wrtsh4.cxx |   11 ++++++-----
 3 files changed, 24 insertions(+), 20 deletions(-)

New commits:
commit be6ce149c164d8ac06f12a4a1cc04a9299f5fd07
Author: Oliver-Rainer Wittmann <orw at apache.org>
Date:   Thu Jun 27 09:56:32 2013 +0000

    121925: fixed by reverting change for issue 119652

diff --git a/sw/source/core/edit/eddel.cxx b/sw/source/core/edit/eddel.cxx
index 3527ec4..3906b59 100644
--- a/sw/source/core/edit/eddel.cxx
+++ b/sw/source/core/edit/eddel.cxx
@@ -47,8 +47,8 @@
 
 void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
 {
-    // nur bei Selektion
-    if( !rPam.HasMark() || *rPam.GetPoint() == *rPam.GetMark())
+    // only on a selection
+    if ( !rPam.HasMark() || *rPam.GetPoint() == *rPam.GetMark())
         return;
 
     // besteht eine Selection in einer Tabelle ?
@@ -58,11 +58,8 @@ void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
     //  2. Point und Mark stehen in unterschiedlichen Boxen, alle
     // selektierten Boxen suchen in den Inhalt loeschen
 
-    //Comment:If the point is outside of a table and the mark point is in the a table cell,
-    //          should go throw the following code
-    if( (rPam.GetNode()->FindTableNode() || rPam.GetNode(sal_False)->FindTableNode()) &&
-        rPam.GetNode()->StartOfSectionNode() !=
-        rPam.GetNode(sal_False)->StartOfSectionNode() )
+    if( rPam.GetNode()->FindTableNode() &&
+        rPam.GetNode()->StartOfSectionNode() != rPam.GetNode(sal_False)->StartOfSectionNode() )
     {
         // in Tabellen das Undo gruppieren
         if( pUndo && !*pUndo )
@@ -75,11 +72,7 @@ void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
         do {
             aDelPam.SetMark();
             SwNode* pNd = aDelPam.GetNode();
-            //Comment:If the point is outside of table, select the table start node as the end node of current selection node
-            const SwNode& rEndNd = !rPam.GetNode()->FindTableNode() && !pNd->FindTableNode()?
-                        *(SwNode*)(rPam.GetNode(sal_False)->FindTableNode())
-                        :
-                        *pNd->EndOfSectionNode();
+            const SwNode& rEndNd = *pNd->EndOfSectionNode();
             if( pEndSelPos->nNode.GetIndex() <= rEndNd.GetIndex() )
             {
                 *aDelPam.GetPoint() = *pEndSelPos;
@@ -91,7 +84,7 @@ void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
                 aDelPam.GetPoint()->nNode = rEndNd;
                 aDelPam.Move( fnMoveBackward, fnGoCntnt );
             }
-                // geschuetze Boxen ueberspringen !
+            // geschuetze Boxen ueberspringen !
             //For i117395, in some situation, the node would be hidden or invisible, which makes the frame of it unavailable
             //So verify it before use it.
             SwCntntFrm* pFrm = NULL;
@@ -111,7 +104,7 @@ void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
     }
     else
     {
-            // alles loeschen
+        // alles loeschen
         GetDoc()->DeleteAndJoin( rPam );
         SaveTblBoxCntnt( rPam.GetPoint() );
     }
commit 562cc00ca57d00a22d56e61c5da307864e5db2f9
Author: Oliver-Rainer Wittmann <orw at apache.org>
Date:   Thu Jun 27 09:41:05 2013 +0000

    119652: avoid invalid selection on Delete-To-Start-Of-Sentence action

diff --git a/sw/source/ui/wrtsh/delete.cxx b/sw/source/ui/wrtsh/delete.cxx
index 3df0a49..b5608fb 100644
--- a/sw/source/ui/wrtsh/delete.cxx
+++ b/sw/source/ui/wrtsh/delete.cxx
@@ -478,7 +478,17 @@ long SwWrtShell::DelToStartOfSentence()
     if(IsStartOfDoc())
         return 0;
     OpenMark();
-    long nRet = _BwdSentence() ? Delete() : 0;
+
+    SwCrsrSaveState aSaveState( *(_GetCrsr()) );
+    sal_Bool bSuccessfulSelection = _BwdSentence();
+    if ( _GetCrsr()->IsInProtectTable( sal_True )
+         || _GetCrsr()->IsSelOvr( nsSwCursorSelOverFlags::SELOVER_TOGGLE |
+                                  nsSwCursorSelOverFlags::SELOVER_CHANGEPOS ) )
+    {
+        bSuccessfulSelection = sal_False;
+    }
+    long nRet = bSuccessfulSelection ? Delete() : 0;
+
     CloseMark( 0 != nRet );
     return nRet;
 }
diff --git a/sw/source/ui/wrtsh/wrtsh4.cxx b/sw/source/ui/wrtsh/wrtsh4.cxx
index e72a0da..648fc6a 100644
--- a/sw/source/ui/wrtsh/wrtsh4.cxx
+++ b/sw/source/ui/wrtsh/wrtsh4.cxx
@@ -223,19 +223,20 @@ sal_Bool SwWrtShell::_BwdSentence()
     if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
     {
         Pop(sal_False);
-        return 0;
+        return sal_False;
     }
     if(IsSttPara())
     {
         Pop();
-        return 1;
+        return sal_True;
     }
     if( !GoPrevSentence()  && !IsSttPara() )
-            // nicht gefunden --> an den Absatz Anfang
-        SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+        // nicht gefunden --> an den Absatz Anfang
+            SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
     ClearMark();
     Combine();
-    return 1;
+
+    return sal_True;
 }
 
 


More information about the Libreoffice-commits mailing list