xref: /aoo42x/main/sw/source/ui/shells/txtcrsr.cxx (revision efeef26f)
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