Author: orw
Date: Thu Jun 27 09:41:05 2013
New Revision: 1497265

URL: http://svn.apache.org/r1497265
Log:
119652: avoid invalid selection on Delete-To-Start-Of-Sentence action

Modified:
    openoffice/trunk/main/sw/source/ui/wrtsh/delete.cxx
    openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh4.cxx

Modified: openoffice/trunk/main/sw/source/ui/wrtsh/delete.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/ui/wrtsh/delete.cxx?rev=1497265&r1=1497264&r2=1497265&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/ui/wrtsh/delete.cxx (original)
+++ openoffice/trunk/main/sw/source/ui/wrtsh/delete.cxx Thu Jun 27 09:41:05 2013
@@ -475,12 +475,22 @@ long SwWrtShell::DelToStartOfPara()
 
 long SwWrtShell::DelToStartOfSentence()
 {
-       if(IsStartOfDoc())
-               return 0;
-       OpenMark();
-       long nRet = _BwdSentence() ? Delete() : 0;
-       CloseMark( 0 != nRet );
-       return nRet;
+    if(IsStartOfDoc())
+        return 0;
+    OpenMark();
+
+    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;
 }
 
 

Modified: openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh4.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh4.cxx?rev=1497265&r1=1497264&r2=1497265&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh4.cxx (original)
+++ openoffice/trunk/main/sw/source/ui/wrtsh/wrtsh4.cxx Thu Jun 27 09:41:05 2013
@@ -218,24 +218,25 @@ sal_Bool SwWrtShell::_FwdSentence()
 
 sal_Bool SwWrtShell::_BwdSentence()
 {
-       Push();
-       ClearMark();
-       if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
-       {
-               Pop(sal_False);
-               return 0;
-       }
-       if(IsSttPara())
-       {
-               Pop();
-               return 1;
-       }
-       if( !GoPrevSentence()  && !IsSttPara() )
-                       // nicht gefunden --> an den Absatz Anfang
-               SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
-       ClearMark();
-       Combine();
-       return 1;
+    Push();
+    ClearMark();
+    if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
+    {
+        Pop(sal_False);
+        return sal_False;
+    }
+    if(IsSttPara())
+    {
+        Pop();
+        return sal_True;
+    }
+    if( !GoPrevSentence()  && !IsSttPara() )
+        // nicht gefunden --> an den Absatz Anfang
+            SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
+    ClearMark();
+    Combine();
+
+    return sal_True;
 }
 
 


Reply via email to