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;
}