Update ooo320-m1
[ooovba.git] / sw / source / ui / wrtsh / wrtsh4.cxx
blob5180849304a70ea34856761f57a76981b427becb
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 $
10 * $Revision: 1.11 $
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"
35 #include <wrtsh.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()
54 if ( IsSttPara() )
55 return 1;
57 * temporaeren Cursor ohne Selektion erzeugen
59 Push();
60 ClearMark();
61 if( !GoStartWord() )
62 // nicht gefunden --> an den Absatzanfang
63 SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
64 ClearMark();
65 // falls vorher Mark gesetzt war, zusammenfassen
66 Combine();
67 return 1;
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()
80 if ( IsEndWrd() )
81 return 1;
82 // temporaeren Cursor ohne Selektion erzeugen
83 Push();
84 ClearMark();
85 if( !GoEndWord() )
86 // nicht gefunden --> an das Absatz Ende
87 SwCrsrShell::MovePara(fnParaCurr, fnParaEnd);
88 ClearMark();
89 // falls vorher Mark gesetzt war, zusammenfassen
90 Combine();
91 return 1;
96 BOOL SwWrtShell::_NxtWrd()
98 BOOL bRet = FALSE;
99 while( IsEndPara() ) // wenn schon am Ende, dann naechsten ???
101 if(!SwCrsrShell::Right(1,CRSR_SKIP_CHARS)) // Document - Ende ??
103 Pop( FALSE );
104 return bRet;
106 bRet = IsStartWord();
108 Push();
109 ClearMark();
110 while( !bRet )
112 if( !GoNextWord() )
114 if( (!IsEndPara() && !SwCrsrShell::MovePara( fnParaCurr, fnParaEnd ) )
115 || !SwCrsrShell::Right(1,CRSR_SKIP_CHARS) )
116 break;
117 bRet = IsStartWord();
119 else
120 bRet = TRUE;
122 ClearMark();
123 Combine();
124 return bRet;
127 BOOL SwWrtShell::_PrvWrd()
129 BOOL bRet = FALSE;
130 while( IsSttPara() )
131 { // wenn schon am Anfang, dann naechsten ???
132 if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
133 { // Document - Anfang ??
134 Pop( FALSE );
135 return bRet;
137 bRet = IsStartWord();
139 Push();
140 ClearMark();
141 while( !bRet )
143 if( !GoPrevWord() )
145 if( (!IsSttPara() && !SwCrsrShell::MovePara( fnParaCurr, fnParaStart ) )
146 || !SwCrsrShell::Left(1,CRSR_SKIP_CHARS) )
147 break;
148 bRet = IsStartWord();
150 else
151 bRet = TRUE;
153 ClearMark();
154 Combine();
155 return bRet;
158 // --> OD 2008-08-06 #i92468#
159 // method code of <SwWrtShell::_NxtWrd()> before fix for issue i72162
160 BOOL SwWrtShell::_NxtWrdForDelete()
162 if ( IsEndPara() )
164 if ( !SwCrsrShell::Right(1,CRSR_SKIP_CHARS) )
166 Pop( FALSE );
167 return FALSE;
169 return TRUE;
171 Push();
172 ClearMark();
173 if ( !GoNextWord() )
175 SwCrsrShell::MovePara( fnParaCurr, fnParaEnd );
177 ClearMark();
178 Combine();
179 return TRUE;
182 // method code of <SwWrtShell::_PrvWrd()> before fix for issue i72162
183 BOOL SwWrtShell::_PrvWrdForDelete()
185 if ( IsSttPara() )
187 if ( !SwCrsrShell::Left(1,CRSR_SKIP_CHARS) )
189 Pop( FALSE );
190 return FALSE;
192 return TRUE;
194 Push();
195 ClearMark();
196 if( !GoPrevWord() )
198 SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
200 ClearMark();
201 Combine();
202 return TRUE;
204 // <--
207 BOOL SwWrtShell::_FwdSentence()
209 Push();
210 ClearMark();
211 if(!SwCrsrShell::Right(1,CRSR_SKIP_CHARS))
213 Pop(FALSE);
214 return 0;
216 if( !GoNextSentence() && !IsEndPara() )
217 SwCrsrShell::MovePara(fnParaCurr, fnParaEnd);
219 ClearMark();
220 Combine();
221 return 1;
226 BOOL SwWrtShell::_BwdSentence()
228 Push();
229 ClearMark();
230 if(!SwCrsrShell::Left(1,CRSR_SKIP_CHARS))
232 Pop(FALSE);
233 return 0;
235 if(IsSttPara())
237 Pop();
238 return 1;
240 if( !GoPrevSentence() && !IsSttPara() )
241 // nicht gefunden --> an den Absatz Anfang
242 SwCrsrShell::MovePara( fnParaCurr, fnParaStart );
243 ClearMark();
244 Combine();
245 return 1;
249 BOOL SwWrtShell::_FwdPara()
251 Push();
252 ClearMark();
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))
257 // {
258 // Pop(FALSE);
259 // return 0;
260 // }
261 // SwCrsrShell::Left(1,CRSR_SKIP_CHARS);
262 // <--
263 BOOL bRet = SwCrsrShell::MovePara(fnParaNext, fnParaStart);
265 ClearMark();
266 Combine();
267 return bRet;
271 BOOL SwWrtShell::_BwdPara()
273 Push();
274 ClearMark();
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))
279 // {
280 // Pop(FALSE);
281 // return 0;
282 // }
283 // SwCrsrShell::Right(1,CRSR_SKIP_CHARS);
284 // <--
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())
290 // SttPara();
291 BOOL bRet = SwCrsrShell::MovePara(fnParaPrev, fnParaStart);
292 if ( !bRet && !IsSttOfPara() )
294 SttPara();
296 // <--
298 ClearMark();
299 Combine();
300 return bRet;