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 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 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 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 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 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 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 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