1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: wrtsh4.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
36 #include <crsskip.hxx>
40 * private Methoden, die den Cursor ueber Suchen bewegen. Das
41 * Aufheben der Selektion muss auf der Ebene darueber erfolgen.
45 * Der Anfang eines Wortes ist das Folgen eines nicht-
46 * Trennzeichens auf Trennzeichen. Ferner das Folgen von
47 * nicht-Satztrennern auf Satztrenner. Der Absatzanfang ist
48 * ebenfalls Wortanfang.
52 BOOL
SwWrtShell::_SttWrd()
57 * temporaeren Cursor ohne Selektion erzeugen
62 // nicht gefunden --> an den Absatzanfang
63 SwCrsrShell::MovePara( fnParaCurr
, fnParaStart
);
65 // falls vorher Mark gesetzt war, zusammenfassen
70 * Das Ende eines Wortes ist das Folgen von Trennzeichen auf
71 * nicht-Trennzeichen. Unter dem Ende eines Wortes wird
72 * ebenfalls die Folge von Worttrennzeichen auf Interpunktions-
73 * zeichen verstanden. Das Absatzende ist ebenfalls Wortende.
78 BOOL
SwWrtShell::_EndWrd()
82 // temporaeren Cursor ohne Selektion erzeugen
86 // nicht gefunden --> an das Absatz Ende
87 SwCrsrShell::MovePara(fnParaCurr
, fnParaEnd
);
89 // falls vorher Mark gesetzt war, zusammenfassen
96 BOOL
SwWrtShell::_NxtWrd()
99 while( IsEndPara() ) // wenn schon am Ende, dann naechsten ???
101 if(!SwCrsrShell::Right(1,CRSR_SKIP_CHARS
)) // Document - Ende ??
106 bRet
= IsStartWord();
114 if( (!IsEndPara() && !SwCrsrShell::MovePara( fnParaCurr
, fnParaEnd
) )
115 || !SwCrsrShell::Right(1,CRSR_SKIP_CHARS
) )
117 bRet
= IsStartWord();
127 BOOL
SwWrtShell::_PrvWrd()
131 { // wenn schon am Anfang, dann naechsten ???
132 if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS
))
133 { // Document - Anfang ??
137 bRet
= IsStartWord();
145 if( (!IsSttPara() && !SwCrsrShell::MovePara( fnParaCurr
, fnParaStart
) )
146 || !SwCrsrShell::Left(1,CRSR_SKIP_CHARS
) )
148 bRet
= IsStartWord();
158 // --> OD 2008-08-06 #i92468#
159 // method code of <SwWrtShell::_NxtWrd()> before fix for issue i72162
160 BOOL
SwWrtShell::_NxtWrdForDelete()
164 if ( !SwCrsrShell::Right(1,CRSR_SKIP_CHARS
) )
175 SwCrsrShell::MovePara( fnParaCurr
, fnParaEnd
);
182 // method code of <SwWrtShell::_PrvWrd()> before fix for issue i72162
183 BOOL
SwWrtShell::_PrvWrdForDelete()
187 if ( !SwCrsrShell::Left(1,CRSR_SKIP_CHARS
) )
198 SwCrsrShell::MovePara( fnParaCurr
, fnParaStart
);
207 BOOL
SwWrtShell::_FwdSentence()
211 if(!SwCrsrShell::Right(1,CRSR_SKIP_CHARS
))
216 if( !GoNextSentence() && !IsEndPara() )
217 SwCrsrShell::MovePara(fnParaCurr
, fnParaEnd
);
226 BOOL
SwWrtShell::_BwdSentence()
230 if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS
))
240 if( !GoPrevSentence() && !IsSttPara() )
241 // nicht gefunden --> an den Absatz Anfang
242 SwCrsrShell::MovePara( fnParaCurr
, fnParaStart
);
249 BOOL
SwWrtShell::_FwdPara()
253 // --> OD 2009-01-06 #i81824#
254 // going right and back again left not needed and causes too much
255 // accessibility events due to the cursor movements.
256 // if(!SwCrsrShell::Right(1,CRSR_SKIP_CHARS))
261 // SwCrsrShell::Left(1,CRSR_SKIP_CHARS);
263 BOOL bRet
= SwCrsrShell::MovePara(fnParaNext
, fnParaStart
);
271 BOOL
SwWrtShell::_BwdPara()
275 // --> OD 2009-01-06 #i81824#
276 // going left and back again right not needed and causes too much
277 // accessibility events due to the cursor movements.
278 // if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
283 // SwCrsrShell::Right(1,CRSR_SKIP_CHARS);
285 // --> OD 2009-01-06 #i81824#
286 // going to start of paragraph only needed, if move to previous paragraph
287 // does not happen. Otherwise, useless accessibility events are triggered
288 // due to cursor movements.
289 // if(!IsSttOfPara())
291 BOOL bRet
= SwCrsrShell::MovePara(fnParaPrev
, fnParaStart
);
292 if ( !bRet
&& !IsSttOfPara() )