update dev300-m58
[ooovba.git] / sw / source / ui / inc / wrtsh.hxx
blobb68e16d993fe194bf80b01d66b0c39aa0180d94b
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: wrtsh.hxx,v $
10 * $Revision: 1.47 $
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 ************************************************************************/
30 #ifndef _WRTSH_HXX
31 #define _WRTSH_HXX
33 #include <com/sun/star/embed/XEmbeddedObject.hpp>
34 #include "swdllapi.h"
35 #include <fesh.hxx>
36 #include <sortopt.hxx>
37 #include <swurl.hxx>
38 #include <IMark.hxx>
40 class Window;
41 class OutputDevice;
42 class SbxArray;
43 class SwDoc;
44 class SpellCheck;
45 class SwViewOption;
46 class SwFlyFrmAttrMgr;
47 class SwField;
48 class SwTOXBase;
49 class SdrView;
50 class SwView;
51 class SvGlobalName;
52 class SwInputFieldList;
53 class SwSection;
54 class Timer;
55 class SvxMacro;
56 class SwFmtINetFmt;
57 class SvxINetBookmark;
58 class SvxAutoCorrect;
59 class NaviContentBookmark;
60 struct SwCallMouseEvent;
61 class DropEvent;
62 struct ChartSelectionInfo;
63 class SfxStringListItem;
64 class SfxRequest;
66 namespace com { namespace sun { namespace star { namespace util {
67 struct SearchOptions;
68 } } } }
71 typedef sal_Int32 SelectionType;
72 namespace nsSelectionType
74 const SelectionType SEL_TXT = CNT_TXT; // Text, niemals auch Rahmen 0x0001
75 const SelectionType SEL_GRF = CNT_GRF; // Grafik 0x0002
76 const SelectionType SEL_OLE = CNT_OLE; // OLE 0x0010
77 const SelectionType SEL_FRM = 0x000020; // Rahmen, keine Inhaltsform
78 const SelectionType SEL_NUM = 0x000040; // NumListe
79 const SelectionType SEL_TBL = 0x000080; // Cursor steht in Tabelle
80 const SelectionType SEL_TBL_CELLS = 0x000100; // Tabellenzellen sind selektiert
81 const SelectionType SEL_DRW = 0x000200; // Zeichenobjekte (Rechteck, Kreis...)
82 const SelectionType SEL_DRW_TXT = 0x000400; // Draw-Textobjekte im Editmode
83 const SelectionType SEL_BEZ = 0x000800; // Bezierobjekte editieren
84 const SelectionType SEL_DRW_FORM = 0x001000; // Zeichenobjekte: DB-Forms
85 const SelectionType SEL_FOC_FRM_CTRL = 0x002000; // a form control is focused. Neither set nor evaluated by the SwWrtShell itself, only by it's clients.
86 const SelectionType SEL_MEDIA = 0x004000; // Media object
87 const SelectionType SEL_EXTRUDED_CUSTOMSHAPE = 0x008000; // extruded custom shape
88 const SelectionType SEL_FONTWORK = 0x010000; // fontwork
89 const SelectionType SEL_POSTIT = 0x020000; //annotation
93 class SW_DLLPUBLIC SwWrtShell: public SwFEShell
95 private:
96 using SwCrsrShell::Left;
97 using SwCrsrShell::Right;
98 using SwCrsrShell::Up;
99 using SwCrsrShell::Down;
100 using SwCrsrShell::LeftMargin;
101 using SwCrsrShell::RightMargin;
102 using SwCrsrShell::SelectTxtAttr;
103 using SwCrsrShell::GotoPage;
104 using SwFEShell::InsertObject;
105 using SwEditShell::AutoCorrect;
106 using SwCrsrShell::GotoMark;
108 public:
110 using SwEditShell::Insert;
112 typedef long (SwWrtShell::*SELECTFUNC)(const Point *, BOOL bProp );
114 SELECTFUNC fnDrag;
115 SELECTFUNC fnSetCrsr;
116 SELECTFUNC fnEndDrag;
117 SELECTFUNC fnKillSel;
119 // Alle Selektionen aufheben
120 long ResetSelect( const Point *, BOOL );
122 //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down
123 //zurueck, falls ein Stack aufgebaut ist
124 inline void ResetCursorStack();
125 SelectionType GetSelectionType() const;
127 BOOL IsModePushed() const { return 0 != pModeStack; }
128 void PushMode();
129 void PopMode();
131 void SttSelect();
132 void EndSelect();
133 BOOL IsInSelect() const { return bInSelect; }
134 void SetInSelect(BOOL bSel = TRUE) { bInSelect = bSel; }
135 // Liegt eine Text- oder Rahmenselektion vor?
136 BOOL HasSelection() const { return SwCrsrShell::HasSelection() ||
137 IsMultiSelection() || IsSelFrmMode() || IsObjSelected(); }
138 BOOL Pop( BOOL bOldCrsr = TRUE );
140 void EnterStdMode();
141 BOOL IsStdMode() const { return !bExtMode && !bAddMode && !bBlockMode; }
143 void EnterExtMode();
144 void LeaveExtMode();
145 long ToggleExtMode();
146 BOOL IsExtMode() const { return bExtMode; }
148 void EnterAddMode();
149 void LeaveAddMode();
150 long ToggleAddMode();
151 BOOL IsAddMode() const { return bAddMode; }
153 void EnterBlockMode();
154 void LeaveBlockMode();
155 long ToggleBlockMode();
156 BOOL IsBlockMode() const { return bBlockMode; }
158 void SetInsMode( BOOL bOn = TRUE );
159 void ToggleInsMode() { SetInsMode( !bIns ); }
160 BOOL IsInsMode() const { return bIns; }
161 void SetRedlineModeAndCheckInsMode( USHORT eMode );
163 void EnterSelFrmMode(const Point *pStartDrag = 0);
164 void LeaveSelFrmMode();
165 BOOL IsSelFrmMode() const { return bLayoutMode; }
166 // Selektion von Rahmen aufheben
167 void UnSelectFrm();
169 // Tabellenzellen selektieren fuer Bearbeiten von Formeln in der Ribbonbar
170 inline void SelTblCells( const Link &rLink, BOOL bMark = TRUE );
171 inline void EndSelTblCells();
173 //Wortweisen oder zeilenweisen Selektionsmodus verlassen. Wird
174 //in der Regel in MB-Up gerufen.
175 BOOL IsExtSel() const { return bSelWrd || bSelLn; }
177 // erfrage, ob der akt. fnDrag - Pointer auf BeginDrag gesetzt ist
178 // Wird fuer MouseMove gebraucht, um die Bugs 55592/55931 zu umgehen.
179 inline BOOL Is_FnDragEQBeginDrag() const;
181 //Basisabfragen
182 BOOL IsInWrd() { return IsInWord(); }
183 BOOL IsSttWrd() { return IsStartWord(); }
184 BOOL IsEndWrd();
185 BOOL IsSttOfPara() const { return IsSttPara(); }
186 BOOL IsEndOfPara() const { return IsEndPara(); }
188 //Word bzw. Satz selektieren.
189 BOOL SelNearestWrd();
190 BOOL SelWrd (const Point * = 0, BOOL bProp=FALSE );
191 // --> FME 2004-07-30 #i32329# Enhanced selection
192 void SelSentence (const Point * = 0, BOOL bProp=FALSE );
193 void SelPara (const Point * = 0, BOOL bProp=FALSE );
194 // <--
195 long SelAll();
197 //Basiscursortravelling
198 typedef BOOL (SwWrtShell:: *FNSimpleMove)();
199 BOOL SimpleMove( FNSimpleMove, BOOL bSelect );
201 BOOL Left ( USHORT nMode, BOOL bSelect,
202 USHORT nCount, BOOL bBasicCall, BOOL bVisual = FALSE );
203 BOOL Right ( USHORT nMode, BOOL bSelect,
204 USHORT nCount, BOOL bBasicCall, BOOL bVisual = FALSE );
205 BOOL Up ( BOOL bSelect = FALSE, USHORT nCount = 1,
206 BOOL bBasicCall = FALSE );
207 BOOL Down ( BOOL bSelect = FALSE, USHORT nCount = 1,
208 BOOL bBasicCall = FALSE );
209 BOOL NxtWrd ( BOOL bSelect = FALSE ) { return SimpleMove( &SwWrtShell::_NxtWrd, bSelect ); }
210 BOOL PrvWrd ( BOOL bSelect = FALSE ) { return SimpleMove( &SwWrtShell::_PrvWrd, bSelect ); }
212 BOOL LeftMargin ( BOOL bSelect, BOOL bBasicCall );
213 BOOL RightMargin( BOOL bSelect, BOOL bBasicCall );
215 BOOL SttDoc ( BOOL bSelect = FALSE );
216 BOOL EndDoc ( BOOL bSelect = FALSE );
218 BOOL SttNxtPg ( BOOL bSelect = FALSE );
219 BOOL SttPrvPg ( BOOL bSelect = FALSE );
220 BOOL EndNxtPg ( BOOL bSelect = FALSE );
221 BOOL EndPrvPg ( BOOL bSelect = FALSE );
222 BOOL SttPg ( BOOL bSelect = FALSE );
223 BOOL EndPg ( BOOL bSelect = FALSE );
224 BOOL SttPara ( BOOL bSelect = FALSE );
225 BOOL EndPara ( BOOL bSelect = FALSE );
226 BOOL FwdPara ( BOOL bSelect = FALSE )
227 { return SimpleMove( &SwWrtShell::_FwdPara, bSelect ); }
228 BOOL BwdPara ( BOOL bSelect = FALSE )
229 { return SimpleMove( &SwWrtShell::_BwdPara, bSelect ); }
230 BOOL FwdSentence( BOOL bSelect = FALSE )
231 { return SimpleMove( &SwWrtShell::_FwdSentence, bSelect ); }
232 BOOL BwdSentence( BOOL bSelect = FALSE )
233 { return SimpleMove( &SwWrtShell::_BwdSentence, bSelect ); }
235 // --> FME 2004-07-30 #i20126# Enhanced table selection
236 BOOL SelectTableRowCol( const Point& rPt, const Point* pEnd = 0, bool bRowDrag = false );
237 // <--
238 BOOL SelectTableRow();
239 BOOL SelectTableCol();
240 BOOL SelectTableCell();
242 BOOL SelectTxtAttr( USHORT nWhich, const SwTxtAttr* pAttr = 0 );
244 // Spaltenweise Spruenge
245 BOOL StartOfColumn ( BOOL bSelect = FALSE );
246 BOOL EndOfColumn ( BOOL bSelect = FALSE );
247 BOOL StartOfNextColumn ( BOOL bSelect = FALSE );
248 BOOL EndOfNextColumn ( BOOL bSelect = FALSE );
249 BOOL StartOfPrevColumn ( BOOL bSelect = FALSE );
250 BOOL EndOfPrevColumn ( BOOL bSelect = FALSE );
252 // setze den Cursor auf die Seite "nPage" an den Anfang
253 // zusaetzlich zu der gleichnamigen Implementierung in crsrsh.hxx
254 // werden hier alle bestehenden Selektionen vor dem Setzen des
255 // Cursors aufgehoben
256 BOOL GotoPage( USHORT nPage, BOOL bRecord );
258 //setzen des Cursors; merken der alten Position fuer Zurueckblaettern.
259 DECL_LINK( ExecFlyMac, void * );
261 BOOL PageCrsr(SwTwips lOffset, BOOL bSelect);
263 // Felder Update
264 void UpdateInputFlds( SwInputFieldList* pLst = 0, BOOL bOnlyInSel = FALSE );
266 void NoEdit(BOOL bHideCrsr = TRUE);
267 void Edit();
268 BOOL IsNoEdit() const { return bNoEdit; }
270 BOOL IsRetainSelection() const { return mbRetainSelection; }
271 void SetRetainSelection( BOOL bRet ) { mbRetainSelection = bRet; }
273 // change current data base and notify
274 void ChgDBData(const SwDBData& SwDBData);
276 // Loeschen
277 long DelToEndOfLine();
278 long DelToStartOfLine();
279 long DelLine();
280 long DelLeft();
282 // loescht auch Rahmen bzw. setzt den Cursor in den Rahmen,
283 // wenn bDelFrm == FALSE ist
284 long DelRight();
285 long DelToEndOfPara();
286 long DelToStartOfPara();
287 long DelToEndOfSentence();
288 long DelToStartOfSentence();
289 long DelNxtWord();
290 long DelPrvWord();
292 // Prueft, ob eine Wortselektion vorliegt.
293 // Gemaess den Regeln fuer intelligentes Cut / Paste
294 // werden umgebende Spaces rausgeschnitten.
295 // Liefert Art der Wortselektion zurueck (siehe enum)
296 enum word {
297 NO_WORD = 0,
298 WORD_SPACE_BEFORE = 1,
299 WORD_SPACE_AFTER = 2,
300 WORD_NO_SPACE = 3
302 int IntelligentCut(int nSelectionType, BOOL bCut = TRUE);
304 // Editieren
305 void Insert(SwField &);
306 void Insert(const String &);
307 // Graphic
308 void Insert( const String &rPath, const String &rFilter,
309 const Graphic &, SwFlyFrmAttrMgr * = 0,
310 BOOL bRule = FALSE );
312 void InsertByWord( const String & );
313 void InsertPageBreak(const String *pPageDesc = 0, USHORT nPgNum = 0 );
314 void InsertLineBreak();
315 void InsertColumnBreak();
316 void InsertFootnote(const String &, BOOL bEndNote = FALSE, BOOL bEdit = TRUE );
317 void SplitNode( BOOL bAutoFormat = FALSE, BOOL bCheckTableStart = TRUE );
318 BOOL CanInsert();
320 // Verzeichnisse
321 void InsertTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
322 BOOL UpdateTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
324 // new fields
325 BOOL UpdateField( sw::mark::IFieldmark &fieldBM);
327 // Numerierung und Bullets
329 Turns on numbering or bullets.
331 @param bNum TRUE: turn on numbering
332 FALSE: turn on bullets
334 void NumOrBulletOn(BOOL bNum); // #i29560#
335 void NumOrBulletOff(); // #i29560#
336 void NumOn();
337 void BulletOn();
339 //OLE
340 void InsertObject( /*SvInPlaceObjectRef *pObj, */ // != 0 fuer Clipboard
341 const svt::EmbeddedObjectRef&,
342 SvGlobalName *pName = 0, // != 0 entspr. Object erzeugen.
343 BOOL bActivate = TRUE,
344 USHORT nSlotId = 0); // SlotId fuer Dialog
346 BOOL InsertOleObject( const svt::EmbeddedObjectRef& xObj, SwFlyFrmFmt **pFlyFrmFmt = 0 );
347 void LaunchOLEObj( long nVerb = 0 ); // Server starten
348 BOOL IsOLEObj() const { return GetCntType() == CNT_OLE;}
349 virtual void MoveObjectIfActive( svt::EmbeddedObjectRef& xObj, const Point& rOffset );
350 virtual void CalcAndSetScale( svt::EmbeddedObjectRef& xObj,
351 const SwRect *pFlyPrtRect = 0,
352 const SwRect *pFlyFrmRect = 0 );
353 virtual void ConnectObj( svt::EmbeddedObjectRef& xIPObj, const SwRect &rPrt,
354 const SwRect &rFrm );
356 // Vorlagen und Formate
358 // enum gibt an, was geschehen soll, wenn das Style nicht gefunden wurde
359 enum GetStyle { GETSTYLE_NOCREATE, // keins anlegen
360 GETSTYLE_CREATESOME, // falls auf PoolId mapt anlegen
361 GETSTYLE_CREATEANY }; // ggfs Standard returnen
363 SwTxtFmtColl* GetParaStyle(const String &rCollName,
364 GetStyle eCreate = GETSTYLE_NOCREATE);
365 SwCharFmt* GetCharStyle(const String &rFmtName,
366 GetStyle eCreate = GETSTYLE_NOCREATE);
367 SwFrmFmt* GetTblStyle(const String &rFmtName);
369 void SetPageStyle(const String &rCollName);
371 String GetCurPageStyle( const BOOL bCalcFrm = TRUE ) const;
373 // Aktuelle Vorlage anhand der geltenden Attribute aendern
374 void QuickUpdateStyle();
376 enum DoType { UNDO, REDO, REPEAT };
378 void Do( DoType eDoType, USHORT nCnt = 1 );
379 String GetDoString( DoType eDoType ) const;
380 String GetRepeatString() const;
381 USHORT GetDoStrings( DoType eDoType, SfxStringListItem& rStrLstItem ) const;
383 //Suchen oder Ersetzen
384 ULONG SearchPattern(const com::sun::star::util::SearchOptions& rSearchOpt,
385 BOOL bSearchInNotes,
386 SwDocPositions eStart, SwDocPositions eEnde,
387 FindRanges eFlags = FND_IN_BODY,
388 int bReplace = FALSE );
390 ULONG SearchTempl (const String &rTempl,
391 SwDocPositions eStart, SwDocPositions eEnde,
392 FindRanges eFlags = FND_IN_BODY,
393 const String* pReplTempl = 0 );
395 ULONG SearchAttr (const SfxItemSet& rFindSet,
396 BOOL bNoColls,
397 SwDocPositions eStart,SwDocPositions eEnde,
398 FindRanges eFlags = FND_IN_BODY,
399 const com::sun::star::util::SearchOptions* pSearchOpt = 0,
400 const SfxItemSet* pReplaceSet = 0);
402 void AutoCorrect( SvxAutoCorrect& rACorr, sal_Unicode cChar = ' ' );
404 // Aktion vor Cursorbewegung
405 // Hebt gfs. Selektionen auf, triggert Timer und GCAttr()
406 void MoveCrsr( BOOL bWithSelect = FALSE );
408 // Eingabefelder updaten
409 BOOL StartInputFldDlg(SwField*, BOOL bNextButton, Window* pParentWin = 0, ByteString* pWindowState = 0);
410 // update DropDown fields
411 BOOL StartDropDownFldDlg(SwField*, BOOL bNextButton, ByteString* pWindowState = 0);
413 //"Handler" fuer Anederungen an der DrawView - fuer Controls.
414 virtual void DrawSelChanged( );
416 // springe zum Bookmark und setze die "Selections-Flags" wieder richtig
417 BOOL GotoMark( const ::sw::mark::IMark* const pMark );
418 BOOL GotoMark( const ::sw::mark::IMark* const pMark, BOOL bSelect, BOOL bStart );
419 BOOL GotoMark( const ::rtl::OUString& rName );
420 BOOL GoNextBookmark(); // TRUE, wenn's noch eine gab
421 BOOL GoPrevBookmark();
423 bool GotoFieldmark(::sw::mark::IFieldmark const * const pMark);
425 BOOL GotoField( const SwFmtFld& rFld );
427 // jump to the next / previous hyperlink - inside text and also
428 // on graphics
429 BOOL SelectNextPrevHyperlink( BOOL bNext = TRUE );
431 // Zugehoerige SwView ermitteln
432 const SwView& GetView() const { return rView; }
433 SwView& GetView() { return rView; }
435 //Weil es sonst keiner macht, gibt es hier eine ExecMacro()
436 void ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
437 // rufe ins dunkle Basic/JavaScript
438 USHORT CallEvent( USHORT nEvent, const SwCallMouseEvent& rCallEvent,
439 BOOL bCheckPtr = FALSE, SbxArray* pArgs = 0,
440 const Link* pCallBack = 0 );
442 // ein Klick aus das angegebene Feld. Der Cursor steht auf diesem.
443 // Fuehre die vor definierten Aktionen aus.
444 void ClickToField( const SwField& rFld );
445 void ClickToINetAttr( const SwFmtINetFmt& rItem, USHORT nFilter = URLLOAD_NOFILTER );
446 BOOL ClickToINetGrf( const Point& rDocPt, USHORT nFilter = URLLOAD_NOFILTER );
447 inline BOOL IsInClickToEdit() const ;
449 // fall ein URL-Button selektiert ist, dessen URL returnen, ansonsten
450 // einen LeerString
451 BOOL GetURLFromButton( String& rURL, String& rDescr ) const;
453 void NavigatorPaste( const NaviContentBookmark& rBkmk,
454 const USHORT nAction );
456 // die Core erzeugt eine Selektion, das SttSelect muss gerufen werden
457 virtual void NewCoreSelection();
459 // autom. Update von Vorlagen
460 void AutoUpdateFrame(SwFrmFmt* pFmt, const SfxItemSet& rStyleSet);
461 void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet);
463 // Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard
464 DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSection* );
467 //ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere
468 //Sichten auf ein Dokument
469 SwWrtShell( SwWrtShell&, Window *pWin, SwView &rShell);
470 SwWrtShell( SwDoc& rDoc, Window *pWin, SwView &rShell,
471 const SwViewOption *pViewOpt = 0);
472 virtual ~SwWrtShell();
474 BOOL TryRemoveIndent(); // #i23725#
476 String GetSelDescr() const;
478 private:
480 SW_DLLPRIVATE void OpenMark();
481 SW_DLLPRIVATE void CloseMark( BOOL bOkFlag );
483 SW_DLLPRIVATE String GetWrdDelim();
484 SW_DLLPRIVATE String GetSDelim();
485 SW_DLLPRIVATE String GetBothDelim();
487 struct ModeStack
489 ModeStack *pNext;
490 BOOL bAdd,
491 bBlock,
492 bExt,
493 bIns;
494 ModeStack(ModeStack *pNextMode, BOOL _bIns, BOOL _bExt, BOOL _bAdd, BOOL _bBlock):
495 pNext(pNextMode),
496 bAdd(_bAdd),
497 bBlock(_bBlock),
498 bExt(_bExt),
499 bIns(_bIns)
501 } *pModeStack;
503 // Cursor bei PageUp / -Down mitnehmen
504 enum PageMove
506 MV_NO,
507 MV_PAGE_UP,
508 MV_PAGE_DOWN
509 } ePageMove;
511 struct CrsrStack
513 Point aDocPos;
514 CrsrStack *pNext;
515 BOOL bValidCurPos : 1;
516 BOOL bIsFrmSel : 1;
517 SwTwips lOffset;
519 CrsrStack( BOOL bValid, BOOL bFrmSel, const Point &rDocPos,
520 SwTwips lOff, CrsrStack *pN )
521 : aDocPos(rDocPos),
522 pNext(pN),
523 bValidCurPos( bValid ),
524 bIsFrmSel( bFrmSel ),
525 lOffset(lOff)
531 } *pCrsrStack;
533 SwView &rView;
535 Point aDest;
536 BOOL bDestOnStack;
537 BOOL HasCrsrStack() const { return 0 != pCrsrStack; }
538 SW_DLLPRIVATE BOOL PushCrsr(SwTwips lOffset, BOOL bSelect);
539 SW_DLLPRIVATE BOOL PopCrsr(BOOL bUpdate, BOOL bSelect = FALSE);
541 // ENDE Cursor bei PageUp / -Down mitnehmen
542 SW_DLLPRIVATE BOOL _SttWrd();
543 SW_DLLPRIVATE BOOL _EndWrd();
544 SW_DLLPRIVATE BOOL _NxtWrd();
545 SW_DLLPRIVATE BOOL _PrvWrd();
546 // --> OD 2008-08-06 #i92468#
547 SW_DLLPRIVATE BOOL _NxtWrdForDelete();
548 SW_DLLPRIVATE BOOL _PrvWrdForDelete();
549 // <--
550 SW_DLLPRIVATE BOOL _FwdSentence();
551 SW_DLLPRIVATE BOOL _BwdSentence();
552 BOOL _FwdPara();
553 SW_DLLPRIVATE BOOL _BwdPara();
555 // Selektionen
556 BOOL bIns :1;
557 BOOL bInSelect :1;
558 BOOL bExtMode :1;
559 BOOL bAddMode :1;
560 BOOL bBlockMode :1;
561 BOOL bLayoutMode :1;
562 BOOL bNoEdit :1;
563 BOOL bCopy :1;
564 BOOL bSelWrd :1;
565 BOOL bSelLn :1;
566 BOOL bIsInClickToEdit:1;
567 BOOL bClearMark :1; // Selektion fuer ChartAutoPilot nicht loeschen
568 BOOL mbRetainSelection :1; // Do not remove selections
570 Point aStart;
571 Link aSelTblLink;
573 SELECTFUNC fnLeaveSelect;
575 //setzt den Cursorstack nach dem Bewegen mit PageUp/-Down zurueck.
576 SW_DLLPRIVATE void _ResetCursorStack();
578 SW_DLLPRIVATE void SttDragDrop(Timer *);
580 using SwCrsrShell::SetCrsr;
581 SW_DLLPRIVATE long SetCrsr(const Point *, BOOL bProp=FALSE );
583 SW_DLLPRIVATE long SetCrsrKillSel(const Point *, BOOL bProp=FALSE );
585 SW_DLLPRIVATE long StdSelect(const Point *, BOOL bProp=FALSE );
586 SW_DLLPRIVATE long BeginDrag(const Point *, BOOL bProp=FALSE );
587 SW_DLLPRIVATE long Drag(const Point *, BOOL bProp=FALSE );
588 SW_DLLPRIVATE long EndDrag(const Point *, BOOL bProp=FALSE );
590 SW_DLLPRIVATE long ExtSelWrd(const Point *, BOOL bProp=FALSE );
591 SW_DLLPRIVATE long ExtSelLn(const Point *, BOOL bProp=FALSE );
593 //Verschieben von Text aus Drag and Drop; Point ist
594 //Destination fuer alle Selektionen.
595 SW_DLLPRIVATE long MoveText(const Point *, BOOL bProp=FALSE );
597 SW_DLLPRIVATE long BeginFrmDrag(const Point *, BOOL bProp=FALSE );
599 //nach SSize/Move eines Frames Update; Point ist Destination.
600 SW_DLLPRIVATE long UpdateLayoutFrm(const Point *, BOOL bProp=FALSE );
602 SW_DLLPRIVATE long SttLeaveSelect(const Point *, BOOL bProp=FALSE );
603 SW_DLLPRIVATE long AddLeaveSelect(const Point *, BOOL bProp=FALSE );
604 SW_DLLPRIVATE long Ignore(const Point *, BOOL bProp=FALSE );
606 SW_DLLPRIVATE void LeaveExtSel() { bSelWrd = bSelLn = FALSE;}
607 SW_DLLPRIVATE BOOL _CanInsert();
609 SW_DLLPRIVATE BOOL GoStart(BOOL KeepArea = FALSE, BOOL * = 0,
610 BOOL bSelect = FALSE, BOOL bDontMoveRegion = FALSE);
611 SW_DLLPRIVATE BOOL GoEnd(BOOL KeepArea = FALSE, BOOL * = 0);
613 enum BookMarkMove
615 BOOKMARK_INDEX,
616 BOOKMARK_NEXT,
617 BOOKMARK_PREV,
618 BOOKMARK_LAST_LAST_ENTRY
621 SW_DLLPRIVATE BOOL MoveBookMark(BookMarkMove eFuncId, const ::sw::mark::IMark* const pMark=NULL);
624 inline void SwWrtShell::ResetCursorStack()
626 if ( HasCrsrStack() )
627 _ResetCursorStack();
630 inline void SwWrtShell::SelTblCells(const Link &rLink, BOOL bMark )
632 SetSelTblCells( TRUE );
633 bClearMark = bMark;
634 aSelTblLink = rLink;
636 inline void SwWrtShell::EndSelTblCells()
638 SetSelTblCells( FALSE );
639 bClearMark = TRUE;
642 inline BOOL SwWrtShell::IsInClickToEdit() const { return bIsInClickToEdit; }
644 inline BOOL SwWrtShell::Is_FnDragEQBeginDrag() const
646 #ifdef GCC
647 SELECTFUNC fnTmp = &SwWrtShell::BeginDrag;
648 return fnDrag == fnTmp;
649 #else
650 return sal::static_int_cast< BOOL >(fnDrag == &SwWrtShell::BeginDrag);
651 #endif
654 #endif