blob: a5fd04f3d7e83f745f6f43341fe47082692eae19 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _WRTSH_HXX
#define _WRTSH_HXX
#include <com/sun/star/embed/XEmbeddedObject.hpp>
#include "swdllapi.h"
#include <fesh.hxx>
#include <sortopt.hxx>
#include <swurl.hxx>
#include <IMark.hxx>
class Window;
class OutputDevice;
class SbxArray;
class SwDoc;
class SpellCheck;
class SwViewOption;
class SwFlyFrmAttrMgr;
class SwField;
class SwTOXBase;
class SdrView;
class SwView;
class SvGlobalName;
class SwInputFieldList;
class SwSectionData;
class Timer;
class SvxMacro;
class SwFmtINetFmt;
class SvxINetBookmark;
class SvxAutoCorrect;
class NaviContentBookmark;
struct SwCallMouseEvent;
class DropEvent;
struct ChartSelectionInfo;
class SfxStringListItem;
class SfxRequest;
namespace com { namespace sun { namespace star { namespace util {
struct SearchOptions;
} } } }
typedef sal_Int32 SelectionType;
namespace nsSelectionType
{
const SelectionType SEL_TXT = CNT_TXT; // Text, niemals auch Rahmen 0x0001
const SelectionType SEL_GRF = CNT_GRF; // Grafik 0x0002
const SelectionType SEL_OLE = CNT_OLE; // OLE 0x0010
const SelectionType SEL_FRM = 0x000020; // Rahmen, keine Inhaltsform
const SelectionType SEL_NUM = 0x000040; // NumListe
const SelectionType SEL_TBL = 0x000080; // Cursor steht in Tabelle
const SelectionType SEL_TBL_CELLS = 0x000100; // Tabellenzellen sind selektiert
const SelectionType SEL_DRW = 0x000200; // Zeichenobjekte (Rechteck, Kreis...)
const SelectionType SEL_DRW_TXT = 0x000400; // Draw-Textobjekte im Editmode
const SelectionType SEL_BEZ = 0x000800; // Bezierobjekte editieren
const SelectionType SEL_DRW_FORM = 0x001000; // Zeichenobjekte: DB-Forms
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.
const SelectionType SEL_MEDIA = 0x004000; // Media object
const SelectionType SEL_EXTRUDED_CUSTOMSHAPE = 0x008000; // extruded custom shape
const SelectionType SEL_FONTWORK = 0x010000; // fontwork
const SelectionType SEL_POSTIT = 0x020000; //annotation
}
class SW_DLLPUBLIC SwWrtShell: public SwFEShell
{
private:
using SwCrsrShell::Left;
using SwCrsrShell::Right;
using SwCrsrShell::Up;
using SwCrsrShell::Down;
using SwCrsrShell::LeftMargin;
using SwCrsrShell::RightMargin;
using SwCrsrShell::SelectTxtAttr;
using SwCrsrShell::GotoPage;
using SwFEShell::InsertObject;
using SwEditShell::AutoCorrect;
using SwCrsrShell::GotoMark;
public:
using SwEditShell::Insert;
typedef long (SwWrtShell::*SELECTFUNC)(const Point *, sal_Bool bProp );
SELECTFUNC fnDrag;
SELECTFUNC fnSetCrsr;
SELECTFUNC fnEndDrag;
SELECTFUNC fnKillSel;
// Alle Selektionen aufheben
long ResetSelect( const Point *, sal_Bool );
//setzt den Cursorstack nach dem Bewegen mit PageUp/-Down
//zurueck, falls ein Stack aufgebaut ist
inline void ResetCursorStack();
SelectionType GetSelectionType() const;
sal_Bool IsModePushed() const { return 0 != pModeStack; }
void PushMode();
void PopMode();
void SttSelect();
void EndSelect();
sal_Bool IsInSelect() const { return bInSelect; }
void SetInSelect(sal_Bool bSel = sal_True) { bInSelect = bSel; }
// Liegt eine Text- oder Rahmenselektion vor?
sal_Bool HasSelection() const { return SwCrsrShell::HasSelection() ||
IsMultiSelection() || IsSelFrmMode() || IsObjSelected(); }
sal_Bool Pop( sal_Bool bOldCrsr = sal_True );
void EnterStdMode();
sal_Bool IsStdMode() const { return !bExtMode && !bAddMode && !bBlockMode; }
void EnterExtMode();
void LeaveExtMode();
long ToggleExtMode();
sal_Bool IsExtMode() const { return bExtMode; }
void EnterAddMode();
void LeaveAddMode();
long ToggleAddMode();
sal_Bool IsAddMode() const { return bAddMode; }
void EnterBlockMode();
void LeaveBlockMode();
long ToggleBlockMode();
sal_Bool IsBlockMode() const { return bBlockMode; }
void SetInsMode( sal_Bool bOn = sal_True );
void ToggleInsMode() { SetInsMode( !bIns ); }
sal_Bool IsInsMode() const { return bIns; }
void SetRedlineModeAndCheckInsMode( sal_uInt16 eMode );
void EnterSelFrmMode(const Point *pStartDrag = 0);
void LeaveSelFrmMode();
sal_Bool IsSelFrmMode() const { return bLayoutMode; }
// Selektion von Rahmen aufheben
void UnSelectFrm();
void Invalidate();
// Tabellenzellen selektieren fuer Bearbeiten von Formeln in der Ribbonbar
inline void SelTblCells( const Link &rLink, sal_Bool bMark = sal_True );
inline void EndSelTblCells();
//Wortweisen oder zeilenweisen Selektionsmodus verlassen. Wird
//in der Regel in MB-Up gerufen.
sal_Bool IsExtSel() const { return bSelWrd || bSelLn; }
// erfrage, ob der akt. fnDrag - Pointer auf BeginDrag gesetzt ist
// Wird fuer MouseMove gebraucht, um die Bugs 55592/55931 zu umgehen.
inline sal_Bool Is_FnDragEQBeginDrag() const;
//Basisabfragen
sal_Bool IsInWrd() { return IsInWord(); }
sal_Bool IsSttWrd() { return IsStartWord(); }
sal_Bool IsEndWrd();
sal_Bool IsSttOfPara() const { return IsSttPara(); }
sal_Bool IsEndOfPara() const { return IsEndPara(); }
//Word bzw. Satz selektieren.
sal_Bool SelNearestWrd();
sal_Bool SelWrd (const Point * = 0, sal_Bool bProp=sal_False );
// --> FME 2004-07-30 #i32329# Enhanced selection
void SelSentence (const Point * = 0, sal_Bool bProp=sal_False );
void SelPara (const Point * = 0, sal_Bool bProp=sal_False );
// <--
long SelAll();
//Basiscursortravelling
typedef sal_Bool (SwWrtShell:: *FNSimpleMove)();
sal_Bool SimpleMove( FNSimpleMove, sal_Bool bSelect );
sal_Bool Left ( sal_uInt16 nMode, sal_Bool bSelect,
sal_uInt16 nCount, sal_Bool bBasicCall, sal_Bool bVisual = sal_False );
sal_Bool Right ( sal_uInt16 nMode, sal_Bool bSelect,
sal_uInt16 nCount, sal_Bool bBasicCall, sal_Bool bVisual = sal_False );
sal_Bool Up ( sal_Bool bSelect = sal_False, sal_uInt16 nCount = 1,
sal_Bool bBasicCall = sal_False );
sal_Bool Down ( sal_Bool bSelect = sal_False, sal_uInt16 nCount = 1,
sal_Bool bBasicCall = sal_False );
sal_Bool NxtWrd ( sal_Bool bSelect = sal_False ) { return SimpleMove( &SwWrtShell::_NxtWrd, bSelect ); }
sal_Bool PrvWrd ( sal_Bool bSelect = sal_False ) { return SimpleMove( &SwWrtShell::_PrvWrd, bSelect ); }
sal_Bool LeftMargin ( sal_Bool bSelect, sal_Bool bBasicCall );
sal_Bool RightMargin( sal_Bool bSelect, sal_Bool bBasicCall );
sal_Bool SttDoc ( sal_Bool bSelect = sal_False );
sal_Bool EndDoc ( sal_Bool bSelect = sal_False );
sal_Bool SttNxtPg ( sal_Bool bSelect = sal_False );
sal_Bool SttPrvPg ( sal_Bool bSelect = sal_False );
sal_Bool EndNxtPg ( sal_Bool bSelect = sal_False );
sal_Bool EndPrvPg ( sal_Bool bSelect = sal_False );
sal_Bool SttPg ( sal_Bool bSelect = sal_False );
sal_Bool EndPg ( sal_Bool bSelect = sal_False );
sal_Bool SttPara ( sal_Bool bSelect = sal_False );
sal_Bool EndPara ( sal_Bool bSelect = sal_False );
sal_Bool FwdPara ( sal_Bool bSelect = sal_False )
{ return SimpleMove( &SwWrtShell::_FwdPara, bSelect ); }
sal_Bool BwdPara ( sal_Bool bSelect = sal_False )
{ return SimpleMove( &SwWrtShell::_BwdPara, bSelect ); }
sal_Bool FwdSentence( sal_Bool bSelect = sal_False )
{ return SimpleMove( &SwWrtShell::_FwdSentence, bSelect ); }
sal_Bool BwdSentence( sal_Bool bSelect = sal_False )
{ return SimpleMove( &SwWrtShell::_BwdSentence, bSelect ); }
// --> FME 2004-07-30 #i20126# Enhanced table selection
sal_Bool SelectTableRowCol( const Point& rPt, const Point* pEnd = 0, bool bRowDrag = false );
// <--
sal_Bool SelectTableRow();
sal_Bool SelectTableCol();
sal_Bool SelectTableCell();
sal_Bool SelectTxtAttr( sal_uInt16 nWhich, const SwTxtAttr* pAttr = 0 );
// Spaltenweise Spruenge
sal_Bool StartOfColumn ( sal_Bool bSelect = sal_False );
sal_Bool EndOfColumn ( sal_Bool bSelect = sal_False );
sal_Bool StartOfNextColumn ( sal_Bool bSelect = sal_False );
sal_Bool EndOfNextColumn ( sal_Bool bSelect = sal_False );
sal_Bool StartOfPrevColumn ( sal_Bool bSelect = sal_False );
sal_Bool EndOfPrevColumn ( sal_Bool bSelect = sal_False );
// setze den Cursor auf die Seite "nPage" an den Anfang
// zusaetzlich zu der gleichnamigen Implementierung in crsrsh.hxx
// werden hier alle bestehenden Selektionen vor dem Setzen des
// Cursors aufgehoben
sal_Bool GotoPage( sal_uInt16 nPage, sal_Bool bRecord );
//setzen des Cursors; merken der alten Position fuer Zurueckblaettern.
DECL_LINK( ExecFlyMac, void * );
sal_Bool PageCrsr(SwTwips lOffset, sal_Bool bSelect);
// Felder Update
void UpdateInputFlds( SwInputFieldList* pLst = 0 );
void NoEdit(sal_Bool bHideCrsr = sal_True);
void Edit();
sal_Bool IsNoEdit() const { return bNoEdit; }
sal_Bool IsRetainSelection() const { return mbRetainSelection; }
void SetRetainSelection( sal_Bool bRet ) { mbRetainSelection = bRet; }
// change current data base and notify
void ChgDBData(const SwDBData& SwDBData);
// Loeschen
long DelToEndOfLine();
long DelToStartOfLine();
long DelLine();
long DelLeft();
// loescht auch Rahmen bzw. setzt den Cursor in den Rahmen,
// wenn bDelFrm == sal_False ist
long DelRight();
long DelToEndOfPara();
long DelToStartOfPara();
long DelToEndOfSentence();
long DelToStartOfSentence();
long DelNxtWord();
long DelPrvWord();
// Prueft, ob eine Wortselektion vorliegt.
// Gemaess den Regeln fuer intelligentes Cut / Paste
// werden umgebende Spaces rausgeschnitten.
// Liefert Art der Wortselektion zurueck (siehe enum)
enum word {
NO_WORD = 0,
WORD_SPACE_BEFORE = 1,
WORD_SPACE_AFTER = 2,
WORD_NO_SPACE = 3
};
int IntelligentCut(int nSelectionType, sal_Bool bCut = sal_True);
// Editieren
void Insert( SwField& rFld );
void Insert(const String &);
// Graphic
void Insert( const String &rPath, const String &rFilter,
const Graphic &, SwFlyFrmAttrMgr * = 0,
sal_Bool bRule = sal_False );
void InsertByWord( const String & );
void InsertPageBreak(const String *pPageDesc = 0, sal_uInt16 nPgNum = 0 );
void InsertLineBreak();
void InsertColumnBreak();
void InsertFootnote(const String &, sal_Bool bEndNote = sal_False, sal_Bool bEdit = sal_True );
void SplitNode( sal_Bool bAutoFormat = sal_False, sal_Bool bCheckTableStart = sal_True );
bool CanInsert();
// Verzeichnisse
void InsertTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
sal_Bool UpdateTableOf(const SwTOXBase& rTOX, const SfxItemSet* pSet = 0);
// Numerierung und Bullets
/**
Turns on numbering or bullets.
@param bNum sal_True: turn on numbering
sal_False: turn on bullets
*/
void NumOrBulletOn(sal_Bool bNum); // #i29560#
void NumOrBulletOff(); // #i29560#
void NumOn();
void BulletOn();
//OLE
void InsertObject( /*SvInPlaceObjectRef *pObj, */ // != 0 fuer Clipboard
const svt::EmbeddedObjectRef&,
SvGlobalName *pName = 0, // != 0 entspr. Object erzeugen.
sal_Bool bActivate = sal_True,
sal_uInt16 nSlotId = 0); // SlotId fuer Dialog
sal_Bool InsertOleObject( const svt::EmbeddedObjectRef& xObj, SwFlyFrmFmt **pFlyFrmFmt = 0 );
void LaunchOLEObj( long nVerb = 0 ); // Server starten
sal_Bool IsOLEObj() const { return GetCntType() == CNT_OLE;}
virtual void MoveObjectIfActive( svt::EmbeddedObjectRef& xObj, const Point& rOffset );
virtual void CalcAndSetScale( svt::EmbeddedObjectRef& xObj,
const SwRect *pFlyPrtRect = 0,
const SwRect *pFlyFrmRect = 0,
const bool bNoTxtFrmPrtAreaChanged = false );
virtual void ConnectObj( svt::EmbeddedObjectRef& xIPObj, const SwRect &rPrt,
const SwRect &rFrm );
// Vorlagen und Formate
// enum gibt an, was geschehen soll, wenn das Style nicht gefunden wurde
enum GetStyle { GETSTYLE_NOCREATE, // keins anlegen
GETSTYLE_CREATESOME, // falls auf PoolId mapt anlegen
GETSTYLE_CREATEANY }; // ggfs Standard returnen
SwTxtFmtColl* GetParaStyle(const String &rCollName,
GetStyle eCreate = GETSTYLE_NOCREATE);
SwCharFmt* GetCharStyle(const String &rFmtName,
GetStyle eCreate = GETSTYLE_NOCREATE);
SwFrmFmt* GetTblStyle(const String &rFmtName);
void SetPageStyle(const String &rCollName);
String GetCurPageStyle( const sal_Bool bCalcFrm = sal_True ) const;
// Aktuelle Vorlage anhand der geltenden Attribute aendern
void QuickUpdateStyle();
enum DoType { UNDO, REDO, REPEAT };
void Do( DoType eDoType, sal_uInt16 nCnt = 1 );
String GetDoString( DoType eDoType ) const;
String GetRepeatString() const;
sal_uInt16 GetDoStrings( DoType eDoType, SfxStringListItem& rStrLstItem ) const;
//Suchen oder Ersetzen
sal_uLong SearchPattern(const com::sun::star::util::SearchOptions& rSearchOpt,
sal_Bool bSearchInNotes,
SwDocPositions eStart, SwDocPositions eEnde,
FindRanges eFlags = FND_IN_BODY,
int bReplace = sal_False );
sal_uLong SearchTempl (const String &rTempl,
SwDocPositions eStart, SwDocPositions eEnde,
FindRanges eFlags = FND_IN_BODY,
const String* pReplTempl = 0 );
sal_uLong SearchAttr (const SfxItemSet& rFindSet,
sal_Bool bNoColls,
SwDocPositions eStart,SwDocPositions eEnde,
FindRanges eFlags = FND_IN_BODY,
const com::sun::star::util::SearchOptions* pSearchOpt = 0,
const SfxItemSet* pReplaceSet = 0);
void AutoCorrect( SvxAutoCorrect& rACorr, sal_Unicode cChar = ' ' );
// Aktion vor Cursorbewegung
// Hebt gfs. Selektionen auf, triggert Timer und GCAttr()
void MoveCrsr( sal_Bool bWithSelect = sal_False );
// Eingabefelder updaten
sal_Bool StartInputFldDlg(SwField*, sal_Bool bNextButton, Window* pParentWin = 0, ByteString* pWindowState = 0);
// update DropDown fields
sal_Bool StartDropDownFldDlg(SwField*, sal_Bool bNextButton, ByteString* pWindowState = 0);
//"Handler" fuer Anederungen an der DrawView - fuer Controls.
virtual void DrawSelChanged( );
// springe zum Bookmark und setze die "Selections-Flags" wieder richtig
sal_Bool GotoMark( const ::sw::mark::IMark* const pMark );
sal_Bool GotoMark( const ::sw::mark::IMark* const pMark, sal_Bool bSelect, sal_Bool bStart );
sal_Bool GotoMark( const ::rtl::OUString& rName );
sal_Bool GoNextBookmark(); // sal_True, wenn's noch eine gab
sal_Bool GoPrevBookmark();
bool GotoFieldmark(::sw::mark::IFieldmark const * const pMark);
sal_Bool GotoField( const SwFmtFld& rFld );
// jump to the next / previous hyperlink - inside text and also
// on graphics
sal_Bool SelectNextPrevHyperlink( sal_Bool bNext = sal_True );
// Zugehoerige SwView ermitteln
const SwView& GetView() const { return rView; }
SwView& GetView() { return rView; }
//Weil es sonst keiner macht, gibt es hier eine ExecMacro()
void ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 );
// rufe ins dunkle Basic/JavaScript
sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent,
sal_Bool bCheckPtr = sal_False, SbxArray* pArgs = 0,
const Link* pCallBack = 0 );
// ein Klick aus das angegebene Feld. Der Cursor steht auf diesem.
// Fuehre die vor definierten Aktionen aus.
void ClickToField( const SwField& rFld );
void ClickToINetAttr( const SwFmtINetFmt& rItem, sal_uInt16 nFilter = URLLOAD_NOFILTER );
sal_Bool ClickToINetGrf( const Point& rDocPt, sal_uInt16 nFilter = URLLOAD_NOFILTER );
inline sal_Bool IsInClickToEdit() const ;
// fall ein URL-Button selektiert ist, dessen URL returnen, ansonsten
// einen LeerString
sal_Bool GetURLFromButton( String& rURL, String& rDescr ) const;
void NavigatorPaste( const NaviContentBookmark& rBkmk,
const sal_uInt16 nAction );
virtual void ApplyViewOptions( const SwViewOption &rOpt );
// autom. Update von Vorlagen
void AutoUpdateFrame(SwFrmFmt* pFmt, const SfxItemSet& rStyleSet);
void AutoUpdatePara(SwTxtFmtColl* pColl, const SfxItemSet& rStyleSet);
// Link fuers einfuegen von Bereichen uebers Drag&Drop/Clipboard
DECL_STATIC_LINK( SwWrtShell, InsertRegionDialog, SwSectionData* );
//ctoren, der erstere ist eine Art kontrollierter copy ctor fuer weitere
//Sichten auf ein Dokument
SwWrtShell( SwWrtShell&, Window *pWin, SwView &rShell);
SwWrtShell( SwDoc& rDoc, Window *pWin, SwView &rShell,
const SwViewOption *pViewOpt = 0);
virtual ~SwWrtShell();
sal_Bool TryRemoveIndent(); // #i23725#
String GetSelDescr() const;
private:
SW_DLLPRIVATE void OpenMark();
SW_DLLPRIVATE void CloseMark( sal_Bool bOkFlag );
SW_DLLPRIVATE String GetWrdDelim();
SW_DLLPRIVATE String GetSDelim();
SW_DLLPRIVATE String GetBothDelim();
struct ModeStack
{
ModeStack *pNext;
sal_Bool bAdd,
bBlock,
bExt,
bIns;
ModeStack(ModeStack *pNextMode, sal_Bool _bIns, sal_Bool _bExt, sal_Bool _bAdd, sal_Bool _bBlock):
pNext(pNextMode),
bAdd(_bAdd),
bBlock(_bBlock),
bExt(_bExt),
bIns(_bIns)
{}
} *pModeStack;
// Cursor bei PageUp / -Down mitnehmen
enum PageMove
{
MV_NO,
MV_PAGE_UP,
MV_PAGE_DOWN
} ePageMove;
struct CrsrStack
{
Point aDocPos;
CrsrStack *pNext;
sal_Bool bValidCurPos : 1;
sal_Bool bIsFrmSel : 1;
SwTwips lOffset;
CrsrStack( sal_Bool bValid, sal_Bool bFrmSel, const Point &rDocPos,
SwTwips lOff, CrsrStack *pN )
: aDocPos(rDocPos),
pNext(pN),
bValidCurPos( bValid ),
bIsFrmSel( bFrmSel ),
lOffset(lOff)
{
}
} *pCrsrStack;
SwView &rView;
Point aDest;
sal_Bool bDestOnStack;
sal_Bool HasCrsrStack() const { return 0 != pCrsrStack; }
SW_DLLPRIVATE sal_Bool PushCrsr(SwTwips lOffset, sal_Bool bSelect);
SW_DLLPRIVATE sal_Bool PopCrsr(sal_Bool bUpdate, sal_Bool bSelect = sal_False);
// ENDE Cursor bei PageUp / -Down mitnehmen
SW_DLLPRIVATE sal_Bool _SttWrd();
SW_DLLPRIVATE sal_Bool _EndWrd();
SW_DLLPRIVATE sal_Bool _NxtWrd();
SW_DLLPRIVATE sal_Bool _PrvWrd();
// --> OD 2008-08-06 #i92468#
SW_DLLPRIVATE sal_Bool _NxtWrdForDelete();
SW_DLLPRIVATE sal_Bool _PrvWrdForDelete();
// <--
SW_DLLPRIVATE sal_Bool _FwdSentence();
SW_DLLPRIVATE sal_Bool _BwdSentence();
sal_Bool _FwdPara();
SW_DLLPRIVATE sal_Bool _BwdPara();
// Selektionen
sal_Bool bIns :1;
sal_Bool bInSelect :1;
sal_Bool bExtMode :1;
sal_Bool bAddMode :1;
sal_Bool bBlockMode :1;
sal_Bool bLayoutMode :1;
sal_Bool bNoEdit :1;
sal_Bool bCopy :1;
sal_Bool bSelWrd :1;
sal_Bool bSelLn :1;
sal_Bool bIsInClickToEdit:1;
sal_Bool bClearMark :1; // Selektion fuer ChartAutoPilot nicht loeschen
sal_Bool mbRetainSelection :1; // Do not remove selections
Point aStart;
Link aSelTblLink;
SELECTFUNC fnLeaveSelect;
//setzt den Cursorstack nach dem Bewegen mit PageUp/-Down zurueck.
SW_DLLPRIVATE void _ResetCursorStack();
SW_DLLPRIVATE void SttDragDrop(Timer *);
using SwCrsrShell::SetCrsr;
SW_DLLPRIVATE long SetCrsr(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long SetCrsrKillSel(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long StdSelect(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long BeginDrag(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long Drag(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long EndDrag(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long ExtSelWrd(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long ExtSelLn(const Point *, sal_Bool bProp=sal_False );
//Verschieben von Text aus Drag and Drop; Point ist
//Destination fuer alle Selektionen.
SW_DLLPRIVATE long MoveText(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long BeginFrmDrag(const Point *, sal_Bool bProp=sal_False );
//nach SSize/Move eines Frames Update; Point ist Destination.
SW_DLLPRIVATE long UpdateLayoutFrm(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long SttLeaveSelect(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long AddLeaveSelect(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE long Ignore(const Point *, sal_Bool bProp=sal_False );
SW_DLLPRIVATE void LeaveExtSel() { bSelWrd = bSelLn = sal_False;}
SW_DLLPRIVATE bool _CanInsert();
SW_DLLPRIVATE sal_Bool GoStart(sal_Bool KeepArea = sal_False, sal_Bool * = 0,
sal_Bool bSelect = sal_False, sal_Bool bDontMoveRegion = sal_False);
SW_DLLPRIVATE sal_Bool GoEnd(sal_Bool KeepArea = sal_False, sal_Bool * = 0);
enum BookMarkMove
{
BOOKMARK_INDEX,
BOOKMARK_NEXT,
BOOKMARK_PREV,
BOOKMARK_LAST_LAST_ENTRY
};
SW_DLLPRIVATE sal_Bool MoveBookMark(BookMarkMove eFuncId, const ::sw::mark::IMark* const pMark=NULL);
};
inline void SwWrtShell::ResetCursorStack()
{
if ( HasCrsrStack() )
_ResetCursorStack();
}
inline void SwWrtShell::SelTblCells(const Link &rLink, sal_Bool bMark )
{
SetSelTblCells( sal_True );
bClearMark = bMark;
aSelTblLink = rLink;
}
inline void SwWrtShell::EndSelTblCells()
{
SetSelTblCells( sal_False );
bClearMark = sal_True;
}
inline sal_Bool SwWrtShell::IsInClickToEdit() const { return bIsInClickToEdit; }
inline sal_Bool SwWrtShell::Is_FnDragEQBeginDrag() const
{
#ifdef GCC
SELECTFUNC fnTmp = &SwWrtShell::BeginDrag;
return fnDrag == fnTmp;
#else
return sal::static_int_cast< sal_Bool >(fnDrag == &SwWrtShell::BeginDrag);
#endif
}
#endif