1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*efeef26fSAndrew Rist * distributed with this work for additional information
6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10*efeef26fSAndrew Rist *
11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist *
13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17*efeef26fSAndrew Rist * specific language governing permissions and limitations
18*efeef26fSAndrew Rist * under the License.
19*efeef26fSAndrew Rist *
20*efeef26fSAndrew Rist *************************************************************/
21*efeef26fSAndrew Rist
22*efeef26fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include <sfx2/request.hxx>
29cdf0e10cSrcweir #include <svl/eitem.hxx>
30cdf0e10cSrcweir #ifndef __SBX_SBXVARIABLE_HXX //autogen
31cdf0e10cSrcweir #include <basic/sbxvar.hxx>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
34cdf0e10cSrcweir #include <sfx2/bindings.hxx>
35cdf0e10cSrcweir
36cdf0e10cSrcweir #ifndef _VIEW_HXX
37cdf0e10cSrcweir #include <view.hxx>
38cdf0e10cSrcweir #endif
39cdf0e10cSrcweir #include <wrtsh.hxx>
40cdf0e10cSrcweir #ifndef _TEXTSH_HXX
41cdf0e10cSrcweir #include <textsh.hxx>
42cdf0e10cSrcweir #endif
43cdf0e10cSrcweir #include <num.hxx>
44cdf0e10cSrcweir #include <edtwin.hxx>
45cdf0e10cSrcweir #include <crsskip.hxx>
46cdf0e10cSrcweir #include <doc.hxx>
47cdf0e10cSrcweir #include <docsh.hxx>
48cdf0e10cSrcweir
49cdf0e10cSrcweir #ifndef _CMDID_H
50cdf0e10cSrcweir #include <cmdid.h>
51cdf0e10cSrcweir #endif
52cdf0e10cSrcweir #include <globals.h>
53cdf0e10cSrcweir #ifndef _GLOBALS_HRC
54cdf0e10cSrcweir #include <globals.hrc>
55cdf0e10cSrcweir #endif
56cdf0e10cSrcweir
57cdf0e10cSrcweir #include <svx/svdouno.hxx>
58cdf0e10cSrcweir #include <svx/fmshell.hxx>
59cdf0e10cSrcweir #include <svx/sdrobjectfilter.hxx>
60cdf0e10cSrcweir
61cdf0e10cSrcweir using namespace ::com::sun::star;
62cdf0e10cSrcweir
ExecBasicMove(SfxRequest & rReq)63cdf0e10cSrcweir void SwTextShell::ExecBasicMove(SfxRequest &rReq)
64cdf0e10cSrcweir {
65cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
66cdf0e10cSrcweir GetView().GetEditWin().FlushInBuffer();
67cdf0e10cSrcweir const SfxItemSet *pArgs = rReq.GetArgs();
68cdf0e10cSrcweir sal_Bool bSelect = sal_False;
69cdf0e10cSrcweir sal_uInt16 nCount = 1;
70cdf0e10cSrcweir if(pArgs)
71cdf0e10cSrcweir {
72cdf0e10cSrcweir const SfxPoolItem *pItem;
73cdf0e10cSrcweir if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_MOVE_COUNT, sal_True, &pItem))
74cdf0e10cSrcweir nCount = ((const SfxInt16Item *)pItem)->GetValue();
75cdf0e10cSrcweir if(SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_MOVE_SELECTION, sal_True, &pItem))
76cdf0e10cSrcweir bSelect = ((const SfxBoolItem *)pItem)->GetValue();
77cdf0e10cSrcweir }
78cdf0e10cSrcweir switch(rReq.GetSlot())
79cdf0e10cSrcweir {
80cdf0e10cSrcweir case FN_CHAR_LEFT_SEL: rReq.SetSlot( FN_CHAR_LEFT ); bSelect = sal_True; break;
81cdf0e10cSrcweir case FN_CHAR_RIGHT_SEL: rReq.SetSlot( FN_CHAR_RIGHT ); bSelect = sal_True; break;
82cdf0e10cSrcweir case FN_LINE_UP_SEL: rReq.SetSlot( FN_LINE_UP ); bSelect = sal_True; break;
83cdf0e10cSrcweir case FN_LINE_DOWN_SEL: rReq.SetSlot( FN_LINE_DOWN ); bSelect = sal_True; break;
84cdf0e10cSrcweir }
85cdf0e10cSrcweir
86cdf0e10cSrcweir uno::Reference< frame::XDispatchRecorder > xRecorder =
87cdf0e10cSrcweir GetView().GetViewFrame()->GetBindings().GetRecorder();
88cdf0e10cSrcweir if ( xRecorder.is() )
89cdf0e10cSrcweir {
90cdf0e10cSrcweir rReq.AppendItem( SfxInt16Item(FN_PARAM_MOVE_COUNT, nCount) );
91cdf0e10cSrcweir rReq.AppendItem( SfxBoolItem(FN_PARAM_MOVE_SELECTION, bSelect) );
92cdf0e10cSrcweir }
93cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot();
94cdf0e10cSrcweir rReq.Done();
95cdf0e10cSrcweir // Get EditWin before calling the move functions (shell change may occur!)
96cdf0e10cSrcweir SwEditWin& rTmpEditWin = GetView().GetEditWin();
97cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nCount; i++ )
98cdf0e10cSrcweir {
99cdf0e10cSrcweir switch(nSlot)
100cdf0e10cSrcweir {
101cdf0e10cSrcweir case FN_CHAR_LEFT: rSh.Left( CRSR_SKIP_CELLS, bSelect, 1, sal_False, sal_True ); break;
102cdf0e10cSrcweir case FN_CHAR_RIGHT: rSh.Right( CRSR_SKIP_CELLS, bSelect, 1, sal_False, sal_True ); break;
103cdf0e10cSrcweir case FN_LINE_UP: rSh.Up ( bSelect, 1 ); break;
104cdf0e10cSrcweir case FN_LINE_DOWN: rSh.Down ( bSelect, 1 ); break;
105cdf0e10cSrcweir default: ASSERT(sal_False, falscher Dispatcher); return;
106cdf0e10cSrcweir }
107cdf0e10cSrcweir }
108cdf0e10cSrcweir
109cdf0e10cSrcweir //#i42732# - notify the edit window that from now on we do not use the input language
110cdf0e10cSrcweir rTmpEditWin.SetUseInputLanguage( sal_False );
111cdf0e10cSrcweir }
112cdf0e10cSrcweir
ExecMove(SfxRequest & rReq)113cdf0e10cSrcweir void SwTextShell::ExecMove(SfxRequest &rReq)
114cdf0e10cSrcweir {
115cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
116cdf0e10cSrcweir SwEditWin& rTmpEditWin = GetView().GetEditWin();
117cdf0e10cSrcweir rTmpEditWin.FlushInBuffer();
118cdf0e10cSrcweir
119cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot();
120cdf0e10cSrcweir sal_Bool bRet = sal_False;
121cdf0e10cSrcweir switch ( nSlot )
122cdf0e10cSrcweir {
123cdf0e10cSrcweir case FN_START_OF_LINE_SEL:
124cdf0e10cSrcweir case FN_START_OF_LINE: bRet = rSh.LeftMargin ( FN_START_OF_LINE_SEL == nSlot, sal_False );
125cdf0e10cSrcweir break;
126cdf0e10cSrcweir
127cdf0e10cSrcweir case FN_END_OF_LINE_SEL:
128cdf0e10cSrcweir case FN_END_OF_LINE: bRet = rSh.RightMargin( FN_END_OF_LINE_SEL == nSlot, sal_False );
129cdf0e10cSrcweir break;
130cdf0e10cSrcweir
131cdf0e10cSrcweir case FN_START_OF_DOCUMENT_SEL:
132cdf0e10cSrcweir case FN_START_OF_DOCUMENT: bRet = rSh.SttDoc ( FN_START_OF_DOCUMENT_SEL == nSlot);
133cdf0e10cSrcweir break;
134cdf0e10cSrcweir
135cdf0e10cSrcweir case FN_END_OF_DOCUMENT_SEL:
136cdf0e10cSrcweir case FN_END_OF_DOCUMENT: bRet = rSh.EndDoc( FN_END_OF_DOCUMENT_SEL == nSlot );
137cdf0e10cSrcweir break;
138cdf0e10cSrcweir
139cdf0e10cSrcweir case FN_SELECT_WORD: bRet = rSh.SelNearestWrd(); break;
140cdf0e10cSrcweir
141cdf0e10cSrcweir case SID_SELECTALL: bRet = 0 != rSh.SelAll(); break;
142cdf0e10cSrcweir default: ASSERT(sal_False, falscher Dispatcher); return;
143cdf0e10cSrcweir }
144cdf0e10cSrcweir
145cdf0e10cSrcweir if ( bRet )
146cdf0e10cSrcweir rReq.Done();
147cdf0e10cSrcweir else
148cdf0e10cSrcweir rReq.Ignore();
149cdf0e10cSrcweir
150cdf0e10cSrcweir //#i42732# - notify the edit window that from now on we do not use the input language
151cdf0e10cSrcweir rTmpEditWin.SetUseInputLanguage( sal_False );
152cdf0e10cSrcweir }
153cdf0e10cSrcweir
ExecMovePage(SfxRequest & rReq)154cdf0e10cSrcweir void SwTextShell::ExecMovePage(SfxRequest &rReq)
155cdf0e10cSrcweir {
156cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
157cdf0e10cSrcweir GetView().GetEditWin().FlushInBuffer();
158cdf0e10cSrcweir
159cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot();
160cdf0e10cSrcweir switch( nSlot )
161cdf0e10cSrcweir {
162cdf0e10cSrcweir case FN_START_OF_NEXT_PAGE_SEL :
163cdf0e10cSrcweir case FN_START_OF_NEXT_PAGE: rSh.SttNxtPg( FN_START_OF_NEXT_PAGE_SEL == nSlot ); break;
164cdf0e10cSrcweir
165cdf0e10cSrcweir case FN_END_OF_NEXT_PAGE_SEL:
166cdf0e10cSrcweir case FN_END_OF_NEXT_PAGE: rSh.EndNxtPg( FN_END_OF_NEXT_PAGE_SEL == nSlot ); break;
167cdf0e10cSrcweir
168cdf0e10cSrcweir case FN_START_OF_PREV_PAGE_SEL:
169cdf0e10cSrcweir case FN_START_OF_PREV_PAGE: rSh.SttPrvPg( FN_START_OF_PREV_PAGE_SEL == nSlot ); break;
170cdf0e10cSrcweir
171cdf0e10cSrcweir case FN_END_OF_PREV_PAGE_SEL:
172cdf0e10cSrcweir case FN_END_OF_PREV_PAGE: rSh.EndPrvPg( FN_END_OF_PREV_PAGE_SEL == nSlot ); break;
173cdf0e10cSrcweir
174cdf0e10cSrcweir case FN_START_OF_PAGE_SEL:
175cdf0e10cSrcweir case FN_START_OF_PAGE: rSh.SttPg ( FN_START_OF_PAGE_SEL == nSlot ); break;
176cdf0e10cSrcweir
177cdf0e10cSrcweir case FN_END_OF_PAGE_SEL:
178cdf0e10cSrcweir case FN_END_OF_PAGE: rSh.EndPg ( FN_END_OF_PAGE_SEL == nSlot ); break;
179cdf0e10cSrcweir default: ASSERT(sal_False, falscher Dispatcher); return;
180cdf0e10cSrcweir }
181cdf0e10cSrcweir rReq.Done();
182cdf0e10cSrcweir }
183cdf0e10cSrcweir
184cdf0e10cSrcweir
ExecMoveCol(SfxRequest & rReq)185cdf0e10cSrcweir void SwTextShell::ExecMoveCol(SfxRequest &rReq)
186cdf0e10cSrcweir {
187cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
188cdf0e10cSrcweir switch ( rReq.GetSlot() )
189cdf0e10cSrcweir {
190cdf0e10cSrcweir case FN_START_OF_COLUMN: rSh.StartOfColumn ( sal_False ); break;
191cdf0e10cSrcweir case FN_END_OF_COLUMN: rSh.EndOfColumn ( sal_False ); break;
192cdf0e10cSrcweir case FN_START_OF_NEXT_COLUMN: rSh.StartOfNextColumn( sal_False ) ; break;
193cdf0e10cSrcweir case FN_END_OF_NEXT_COLUMN: rSh.EndOfNextColumn ( sal_False ); break;
194cdf0e10cSrcweir case FN_START_OF_PREV_COLUMN: rSh.StartOfPrevColumn( sal_False ); break;
195cdf0e10cSrcweir case FN_END_OF_PREV_COLUMN: rSh.EndOfPrevColumn ( sal_False ); break;
196cdf0e10cSrcweir default: ASSERT(sal_False, falscher Dispatcher); return;
197cdf0e10cSrcweir }
198cdf0e10cSrcweir rReq.Done();
199cdf0e10cSrcweir }
200cdf0e10cSrcweir
ExecMoveLingu(SfxRequest & rReq)201cdf0e10cSrcweir void SwTextShell::ExecMoveLingu(SfxRequest &rReq)
202cdf0e10cSrcweir {
203cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
204cdf0e10cSrcweir GetView().GetEditWin().FlushInBuffer();
205cdf0e10cSrcweir
206cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot();
207cdf0e10cSrcweir sal_Bool bRet = sal_False;
208cdf0e10cSrcweir switch ( nSlot )
209cdf0e10cSrcweir {
210cdf0e10cSrcweir case FN_NEXT_WORD_SEL:
211cdf0e10cSrcweir case FN_NEXT_WORD: bRet = rSh.NxtWrd( FN_NEXT_WORD_SEL == nSlot );
212cdf0e10cSrcweir break;
213cdf0e10cSrcweir
214cdf0e10cSrcweir case FN_START_OF_PARA_SEL:
215cdf0e10cSrcweir case FN_START_OF_PARA: bRet = rSh.SttPara( FN_START_OF_PARA_SEL == nSlot );
216cdf0e10cSrcweir break;
217cdf0e10cSrcweir
218cdf0e10cSrcweir case FN_END_OF_PARA_SEL:
219cdf0e10cSrcweir case FN_END_OF_PARA: bRet = rSh.EndPara( FN_END_OF_PARA_SEL == nSlot );
220cdf0e10cSrcweir break;
221cdf0e10cSrcweir
222cdf0e10cSrcweir case FN_PREV_WORD_SEL:
223cdf0e10cSrcweir case FN_PREV_WORD: bRet = rSh.PrvWrd( FN_PREV_WORD_SEL == nSlot );
224cdf0e10cSrcweir break;
225cdf0e10cSrcweir
226cdf0e10cSrcweir case FN_NEXT_SENT_SEL:
227cdf0e10cSrcweir case FN_NEXT_SENT: bRet = rSh.FwdSentence( FN_NEXT_SENT_SEL == nSlot );
228cdf0e10cSrcweir break;
229cdf0e10cSrcweir
230cdf0e10cSrcweir case FN_PREV_SENT_SEL:
231cdf0e10cSrcweir case FN_PREV_SENT: bRet = rSh.BwdSentence( FN_PREV_SENT_SEL == nSlot );
232cdf0e10cSrcweir break;
233cdf0e10cSrcweir
234cdf0e10cSrcweir case FN_NEXT_PARA: bRet = rSh.FwdPara ( sal_False );
235cdf0e10cSrcweir break;
236cdf0e10cSrcweir
237cdf0e10cSrcweir case FN_PREV_PARA: bRet = rSh.BwdPara ( sal_False );
238cdf0e10cSrcweir break;
239cdf0e10cSrcweir default: ASSERT(sal_False, falscher Dispatcher); return;
240cdf0e10cSrcweir }
241cdf0e10cSrcweir rReq.Done();
242cdf0e10cSrcweir }
243cdf0e10cSrcweir
ExecMoveMisc(SfxRequest & rReq)244cdf0e10cSrcweir void SwTextShell::ExecMoveMisc(SfxRequest &rReq)
245cdf0e10cSrcweir {
246cdf0e10cSrcweir SwWrtShell &rSh = GetShell();
247cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot();
248cdf0e10cSrcweir sal_Bool bSetRetVal = sal_True, bRet = sal_True;
249cdf0e10cSrcweir switch ( nSlot )
250cdf0e10cSrcweir {
251cdf0e10cSrcweir case SID_FM_TOGGLECONTROLFOCUS:
252cdf0e10cSrcweir {
253cdf0e10cSrcweir const SwDoc* pDoc = rSh.GetDoc();
254cdf0e10cSrcweir const SwDocShell* pDocShell = pDoc ? pDoc->GetDocShell() : NULL;
255cdf0e10cSrcweir const SwView* pView = pDocShell ? pDocShell->GetView() : NULL;
256cdf0e10cSrcweir const FmFormShell* pFormShell = pView ? pView->GetFormShell() : NULL;
257cdf0e10cSrcweir SdrView* pDrawView = pView ? pView->GetDrawView() : NULL;
258cdf0e10cSrcweir Window* pWindow = pView ? pView->GetWrtShell().GetWin() : NULL;
259cdf0e10cSrcweir
260cdf0e10cSrcweir OSL_ENSURE( pFormShell && pDrawView && pWindow, "SwXTextView::ExecMoveMisc: no chance!" );
261cdf0e10cSrcweir if ( !pFormShell || !pDrawView || !pWindow )
262cdf0e10cSrcweir break;
263cdf0e10cSrcweir
264cdf0e10cSrcweir ::std::auto_ptr< ::svx::ISdrObjectFilter > pFilter( pFormShell->CreateFocusableControlFilter(
265cdf0e10cSrcweir *pDrawView, *pWindow ) );
266cdf0e10cSrcweir if ( !pFilter.get() )
267cdf0e10cSrcweir break;
268cdf0e10cSrcweir
269cdf0e10cSrcweir const SdrObject* pNearestControl = rSh.GetBestObject( sal_True, GOTOOBJ_DRAW_CONTROL, sal_False, pFilter.get() );
270cdf0e10cSrcweir if ( !pNearestControl )
271cdf0e10cSrcweir break;
272cdf0e10cSrcweir
273cdf0e10cSrcweir const SdrUnoObj* pUnoObject = dynamic_cast< const SdrUnoObj* >( pNearestControl );
274cdf0e10cSrcweir OSL_ENSURE( pUnoObject, "SwTextShell::ExecMoveMisc: GetBestObject returned nonsense!" );
275cdf0e10cSrcweir if ( !pUnoObject )
276cdf0e10cSrcweir break;
277cdf0e10cSrcweir
278cdf0e10cSrcweir pFormShell->ToggleControlFocus( *pUnoObject, *pDrawView, *pWindow );
279cdf0e10cSrcweir }
280cdf0e10cSrcweir break;
281cdf0e10cSrcweir case FN_CNTNT_TO_NEXT_FRAME:
282cdf0e10cSrcweir bRet = rSh.GotoObj(sal_True, GOTOOBJ_GOTO_ANY);
283cdf0e10cSrcweir if(bRet)
284cdf0e10cSrcweir {
285cdf0e10cSrcweir rSh.HideCrsr();
286cdf0e10cSrcweir rSh.EnterSelFrmMode();
287cdf0e10cSrcweir }
288cdf0e10cSrcweir break;
289cdf0e10cSrcweir case FN_NEXT_FOOTNOTE:
290cdf0e10cSrcweir rSh.MoveCrsr();
291cdf0e10cSrcweir bRet = rSh.GotoNextFtnAnchor();
292cdf0e10cSrcweir break;
293cdf0e10cSrcweir case FN_PREV_FOOTNOTE:
294cdf0e10cSrcweir rSh.MoveCrsr();
295cdf0e10cSrcweir bRet = rSh.GotoPrevFtnAnchor();
296cdf0e10cSrcweir break;
297cdf0e10cSrcweir case FN_TO_HEADER:
298cdf0e10cSrcweir rSh.MoveCrsr();
299cdf0e10cSrcweir if ( FRMTYPE_HEADER & rSh.GetFrmType(0,sal_False) )
300cdf0e10cSrcweir rSh.SttPg();
301cdf0e10cSrcweir else
302cdf0e10cSrcweir rSh.GotoHeaderTxt();
303cdf0e10cSrcweir bSetRetVal = sal_False;
304cdf0e10cSrcweir break;
305cdf0e10cSrcweir case FN_TO_FOOTER:
306cdf0e10cSrcweir rSh.MoveCrsr();
307cdf0e10cSrcweir if ( FRMTYPE_FOOTER & rSh.GetFrmType(0,sal_False) )
308cdf0e10cSrcweir rSh.EndPg();
309cdf0e10cSrcweir else
310cdf0e10cSrcweir rSh.GotoFooterTxt();
311cdf0e10cSrcweir bSetRetVal = sal_False;
312cdf0e10cSrcweir break;
313cdf0e10cSrcweir case FN_FOOTNOTE_TO_ANCHOR:
314cdf0e10cSrcweir rSh.MoveCrsr();
315cdf0e10cSrcweir if ( FRMTYPE_FOOTNOTE & rSh.GetFrmType(0,sal_False) )
316cdf0e10cSrcweir rSh.GotoFtnAnchor();
317cdf0e10cSrcweir else
318cdf0e10cSrcweir rSh.GotoFtnTxt();
319cdf0e10cSrcweir bSetRetVal = sal_False;
320cdf0e10cSrcweir break;
321cdf0e10cSrcweir case FN_TO_FOOTNOTE_AREA :
322cdf0e10cSrcweir rSh.GotoFtnTxt();
323cdf0e10cSrcweir break;
324cdf0e10cSrcweir case FN_PREV_TABLE:
325cdf0e10cSrcweir bRet = rSh.MoveTable( fnTablePrev, fnTableStart);
326cdf0e10cSrcweir break;
327cdf0e10cSrcweir case FN_NEXT_TABLE:
328cdf0e10cSrcweir bRet = rSh.MoveTable(fnTableNext, fnTableStart);
329cdf0e10cSrcweir break;
330cdf0e10cSrcweir case FN_GOTO_NEXT_REGION :
331cdf0e10cSrcweir bRet = rSh.MoveRegion(fnRegionNext, fnRegionStart);
332cdf0e10cSrcweir break;
333cdf0e10cSrcweir case FN_GOTO_PREV_REGION :
334cdf0e10cSrcweir bRet = rSh.MoveRegion(fnRegionPrev, fnRegionStart);
335cdf0e10cSrcweir break;
336cdf0e10cSrcweir
337cdf0e10cSrcweir case FN_NEXT_TOXMARK:
338cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTOXMark( sal_True );
339cdf0e10cSrcweir break;
340cdf0e10cSrcweir case FN_PREV_TOXMARK:
341cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTOXMark( sal_False );
342cdf0e10cSrcweir break;
343cdf0e10cSrcweir case FN_NEXT_TBLFML:
344cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTblFormula( sal_True, sal_False );
345cdf0e10cSrcweir break;
346cdf0e10cSrcweir case FN_PREV_TBLFML:
347cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTblFormula( sal_False, sal_False );
348cdf0e10cSrcweir break;
349cdf0e10cSrcweir case FN_NEXT_TBLFML_ERR:
350cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTblFormula( sal_True, sal_True );
351cdf0e10cSrcweir break;
352cdf0e10cSrcweir case FN_PREV_TBLFML_ERR:
353cdf0e10cSrcweir bRet = rSh.GotoNxtPrvTblFormula( sal_False, sal_True );
354cdf0e10cSrcweir break;
355cdf0e10cSrcweir
356cdf0e10cSrcweir default:
357cdf0e10cSrcweir ASSERT(sal_False, falscher Dispatcher);
358cdf0e10cSrcweir return;
359cdf0e10cSrcweir }
360cdf0e10cSrcweir
361cdf0e10cSrcweir if( bSetRetVal )
362cdf0e10cSrcweir rReq.SetReturnValue(SfxBoolItem( nSlot, bRet ));
363cdf0e10cSrcweir rReq.Done();
364cdf0e10cSrcweir
365cdf0e10cSrcweir }
366cdf0e10cSrcweir
367