LibreOffice Module sw (master)  1
delete.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <wrtsh.hxx>
21 #include <swcrsr.hxx>
22 #include <editeng/lrspitem.hxx>
23 #include <view.hxx>
24 #include <drawbase.hxx>
25 #include <unobaseclass.hxx>
26 #include <fmtanchr.hxx>
27 #include <flyfrm.hxx>
28 #include <ndtxt.hxx>
29 #include <txtfld.hxx>
30 #include <docufld.hxx>
31 #include <IDocumentUndoRedo.hxx>
32 #include <i18nutil/unicode.hxx>
33 #include <rtl/character.hxx>
34 
35 inline void SwWrtShell::OpenMark()
36 {
39  KillPams();
40  SetMark();
41 }
42 
43 inline void SwWrtShell::CloseMark( bool bOkFlag )
44 {
45  if( bOkFlag )
46  UpdateAttr();
47  else
48  SwapPam();
49 
50  ClearMark();
51  EndAllAction();
52 }
53 
54 
55 
56 // #i23725#
58 {
59  bool bResult = false;
60 
62  GetCurAttr(aAttrSet);
63 
64  SvxLRSpaceItem aItem = aAttrSet.Get(RES_LR_SPACE);
65  short aOldFirstLineOfst = aItem.GetTextFirstLineOfst();
66 
67  if (aOldFirstLineOfst > 0)
68  {
69  aItem.SetTextFirstLineOfst(0);
70  bResult = true;
71  }
72  else if (aOldFirstLineOfst < 0)
73  {
74  aItem.SetTextFirstLineOfst(0);
75  aItem.SetLeft(aItem.GetLeft() + aOldFirstLineOfst);
76 
77  bResult = true;
78  }
79  else if (aItem.GetLeft() != 0)
80  {
81  aItem.SetLeft(0);
82  bResult = true;
83  }
84 
85  if (bResult)
86  {
87  aAttrSet.Put(aItem);
88  SetAttrSet(aAttrSet);
89  }
90 
91  return bResult;
92 }
93 
97 {
98  SwActContext aActContext(this);
100  // remember the old cursor
101  Push();
102  ClearMark();
104  SetMark();
106 
107  bool bRet = Delete();
109  if( bRet )
110  UpdateAttr();
111 }
112 
114 {
115  OpenMark();
117  bool bRet = Delete();
118  CloseMark( bRet );
119 }
120 
122 {
123  OpenMark();
125  bool bRet = Delete();
126  CloseMark( bRet );
127 }
128 
130 {
131  // If it's a Fly, throw it away
132  SelectionType nSelType = GetSelectionType();
134  if( nCmp & nSelType )
135  {
136  // #108205# Remember object's position.
137  Point aTmpPt = GetObjRect().TopLeft();
138 
139  DelSelectedObj();
140 
141  // #108205# Set cursor to remembered position.
142  SetCursor(&aTmpPt);
143 
145  UnSelectFrame();
146 
147  nSelType = GetSelectionType();
148  if ( nCmp & nSelType )
149  {
151  GotoNextFly();
152  }
153 
154  return true;
155  }
156 
157  // If a selection exists, erase this
158  if ( IsSelection() )
159  {
160  if( !IsBlockMode() || HasSelection() )
161  {
162  //OS: Once again Basic: SwActContext must be leaved
163  //before EnterStdMode!
164  {
165  SwActContext aActContext(this);
167  Delete();
168  UpdateAttr();
169  }
170  if( IsBlockMode() )
171  {
172  NormalizePam();
173  ClearMark();
174  EnterBlockMode();
175  }
176  else
177  EnterStdMode();
178  return true;
179  }
180  else
181  EnterStdMode();
182  }
183 
184  // JP 29.06.95: never erase a table standing in front of it.
185  bool bSwap = false;
186  const SwTableNode * pWasInTableNd = SwCursorShell::IsCursorInTable();
187 
189  {
190  // Start/EndAllAction to avoid cursor flickering
193 
194  // #i4032# Don't actually call a 'delete' if we
195  // changed the table cell, compare DelRight().
196  const SwStartNode * pSNdOld = pWasInTableNd ?
198  nullptr;
199 
200  // If the cursor is at the beginning of a paragraph, try to step
201  // backwards. On failure we are done.
202  bool bDoSomething = SwCursorShell::Left(1,CRSR_SKIP_CHARS);
203 
204  if (bDoSomething)
205  {
206  // If the cursor entered or left a table (or both) we are done.
207  const SwTableNode* pIsInTableNd = SwCursorShell::IsCursorInTable();
208  bDoSomething = pIsInTableNd == pWasInTableNd;
209 
210  if (bDoSomething)
211  {
212  const SwStartNode* pSNdNew = pIsInTableNd ?
214  nullptr;
215 
216  // #i4032# Don't actually call a 'delete' if we
217  // changed the table cell, compare DelRight().
218  bDoSomething = pSNdOld == pSNdNew;
219  }
220  }
221 
222  if (!bDoSomething)
223  {
224  // tdf#115132 Restore previous position and we are done
226  return false;
227  }
228 
230 
231  OpenMark();
234  bSwap = true;
235  }
236  else
237  {
238  // If we are just to the right to a fieldmark, then remove it completely
239  const SwPosition* pCurPos = GetCursor()->GetPoint();
240  SwPosition aPrevChar(*pCurPos);
241  --aPrevChar.nContent;
243  if (pFm && pFm->GetMarkEnd() == *pCurPos)
244  {
245  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
248  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
249  return true;
250  }
251 
252  OpenMark();
254  if (SvtScriptType::ASIAN == GetScriptType())
255  {
256  sal_uInt32 nCode = GetChar(false);
257  if ( rtl::isSurrogate( nCode ) )
258  {
259  OUString sStr = GetSelText();
260  sal_Int32 nIndex = 0;
261  nCode = sStr.iterateCodePoints( &nIndex );
262  }
263 
264  if ( unicode::isIVSSelector( nCode ) )
265  {
268  OUString sStr = GetSelText();
269  sal_Int32 nIndex = 0;
270  nCode = sStr.iterateCodePoints( &nIndex );
271  if ( unicode::isCJKIVSCharacter( nCode ) )
273  else
275  }
276  }
277  }
278  bool bRet = Delete();
279  if( !bRet && bSwap )
281  CloseMark( bRet );
282  return bRet;
283 }
284 
286 {
287  // Will be or'ed, if a tableselection exists;
288  // will here be implemented on SelectionType::Table
289  bool bRet = false;
290  SelectionType nSelection = GetSelectionType();
291  if(nSelection & SelectionType::TableCell)
292  nSelection = SelectionType::Table;
293  if(nSelection & SelectionType::Text)
294  nSelection = SelectionType::Text;
295 
296  switch( nSelection & ~SelectionType::Ornament )
297  {
299  case SelectionType::Text:
302  // If a selection exists, erase it.
303  if( IsSelection() )
304  {
305  if( !IsBlockMode() || HasSelection() )
306  {
307  //OS: And once again Basic: SwActContext must be
308  //leaved before EnterStdMode !
309  {
310  SwActContext aActContext(this);
312  Delete();
313  UpdateAttr();
314  }
315  if( IsBlockMode() )
316  {
317  NormalizePam();
318  ClearMark();
319  EnterBlockMode();
320  }
321  else
322  EnterStdMode();
323  bRet = true;
324  break;
325  }
326  else
327  EnterStdMode();
328  }
329 
331  {
332  // Start/EndAllAction to avoid cursor flickering
334 
335  const SwTableNode* pWasInTableNd = IsCursorInTable();
336  // #108049# Save the startnode of the current cell
337  const SwStartNode* pSNdOld = pWasInTableNd ?
338  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
339  bool bCheckDelFull = SelectionType::Text & nSelection && SwCursorShell::IsSttPara();
340  bool bDelFull = false;
341  bool bDoNothing = false;
342 
343  // #i41424# Introduced a couple of
344  // Push()-Pop() pairs here. The reason for this is that a
345  // Right()-Left() combination does not make sure, that
346  // the cursor will be in its initial state, because there
347  // may be a numbering in front of the next paragraph.
349 
351  {
352  const SwTableNode* pCurrTableNd = IsCursorInTable();
353  bDelFull = bCheckDelFull && pCurrTableNd && pCurrTableNd != pWasInTableNd;
354  if (!bDelFull && (IsCursorInTable() || (pCurrTableNd != pWasInTableNd)))
355  {
356  // #108049# Save the startnode of the current cell.
357  // May be different to pSNdOld as we have moved.
358  const SwStartNode* pSNdNew = pCurrTableNd ?
359  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
360 
361  // tdf#115132 Only keep cursor position instead of deleting
362  // if we have moved to a different cell
363  bDoNothing = pSNdOld != pSNdNew;
364  }
365  }
366 
367  // restore cursor
369 
370  if (bDelFull)
371  {
372  DelFullPara();
373  UpdateAttr();
374  }
375  if (bDelFull || bDoNothing)
376  break;
377  }
378 
379  {
380  // If we are just ahead of a fieldmark, then remove it completely
382  if (pFm && pFm->GetMarkStart() == *GetCursor()->GetPoint())
383  {
384  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
387  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
388  bRet = true;
389  break;
390  }
391  }
392 
393  OpenMark();
395  bRet = Delete();
396  CloseMark( bRet );
397  break;
398 
401  case SelectionType::Ole:
405  {
406  // #108205# Remember object's position.
407  Point aTmpPt = GetObjRect().TopLeft();
408 
409  // Remember the anchor of the selected object before deletion.
410  std::unique_ptr<SwPosition> pAnchor;
412  if (pFly)
413  {
414  SwFrameFormat* pFormat = pFly->GetFormat();
415  if (pFormat)
416  {
417  RndStdIds eAnchorId = pFormat->GetAnchor().GetAnchorId();
418  if ((eAnchorId == RndStdIds::FLY_AS_CHAR || eAnchorId == RndStdIds::FLY_AT_CHAR)
419  && pFormat->GetAnchor().GetContentAnchor())
420  {
421  pAnchor.reset(new SwPosition(*pFormat->GetAnchor().GetContentAnchor()));
422  }
423  }
424  }
425 
426  // Group deletion of the object and its comment together.
427  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
428 
429  DelSelectedObj();
430 
431  if (pAnchor)
432  {
433  SwTextNode* pTextNode = pAnchor->nNode.GetNode().GetTextNode();
434  if (pTextNode)
435  {
436  const SwTextField* pField(
437  pTextNode->GetFieldTextAttrAt(pAnchor->nContent.GetIndex(), true));
438  if (pField
439  && dynamic_cast<const SwPostItField*>(pField->GetFormatField().GetField()))
440  {
441  // Remove the comment of the deleted object.
442  *GetCurrentShellCursor().GetPoint() = *pAnchor;
443  DelRight();
444  }
445  }
446  }
447 
448  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
449 
450  // #108205# Set cursor to remembered position.
451  SetCursor(&aTmpPt);
452 
454  UnSelectFrame();
455  OSL_ENSURE( !IsFrameSelected(),
456  "<SwWrtShell::DelRight(..)> - <SwWrtShell::UnSelectFrame()> should unmark all objects" );
457  // leave draw mode, if necessary.
458  {
459  if (GetView().GetDrawFuncPtr())
460  {
462  GetView().SetDrawFuncPtr(nullptr);
463  }
464  if ( GetView().IsDrawMode() )
465  {
467  }
468  }
469  }
470 
471  // <IsFrameSelected()> can't be true - see above.
472  {
473  nSelection = GetSelectionType();
474  if ( SelectionType::Frame & nSelection ||
475  SelectionType::Graphic & nSelection ||
476  SelectionType::Ole & nSelection ||
477  SelectionType::DrawObject & nSelection )
478  {
480  GotoNextFly();
481  }
482  }
483  bRet = true;
484  break;
485  default: break;
486  }
487  return bRet;
488 }
489 
491 {
492  SwActContext aActContext(this);
494  Push();
495  SetMark();
497  {
499  return;
500  }
501  bool bRet = Delete();
503  if( bRet )
504  UpdateAttr();
505 }
506 
508 {
509  SwActContext aActContext(this);
511  Push();
512  SetMark();
514  {
516  return;
517  }
518  bool bRet = Delete();
520  if( bRet )
521  UpdateAttr();
522 }
523 
524 // All erase operations should work with Find instead with
525 // Nxt-/PrvDelim, because the latter works with Wrap Around
526 // -- that's probably not wished.
527 
529 {
530  if(IsStartOfDoc())
531  return;
532  OpenMark();
533  bool bRet = BwdSentence_() && Delete();
534  CloseMark( bRet );
535 }
536 
538 {
539  if(IsEndOfDoc())
540  return false;
541  OpenMark();
542  bool bRet(false);
543  // fdo#60967: special case that is documented in help: delete
544  // paragraph following table if cursor is at end of last cell in table
545  if (IsEndOfTable())
546  {
547  Push();
548  ClearMark();
550  {
551  SetMark();
552  if (!IsEndPara()) // can only be at the end if it's empty
553  { // for an empty paragraph this would actually select the _next_
555  }
556  if (!IsEndOfDoc()) // do not delete last paragraph in body text
557  {
558  bRet = DelFullPara();
559  }
560  }
562  }
563  else
564  {
565  bRet = FwdSentence_() && Delete();
566  }
567  CloseMark( bRet );
568  return bRet;
569 }
570 
572 {
573  if(IsEndOfDoc())
574  return;
575  SwActContext aActContext(this);
577  EnterStdMode();
578  SetMark();
579  if(IsEndWrd() && !IsStartWord())
580  NxtWrdForDelete(); // #i92468#
581  if(IsStartWord() || IsEndPara())
582  NxtWrdForDelete(); // #i92468#
583  else
584  EndWrd();
585 
586  bool bRet = Delete();
587  if( bRet )
588  UpdateAttr();
589  else
590  SwapPam();
591  ClearMark();
592 }
593 
595 {
596  if(IsStartOfDoc())
597  return;
598  SwActContext aActContext(this);
600  EnterStdMode();
601  SetMark();
602  if ( !IsStartWord() ||
603  !PrvWrdForDelete() ) // #i92468#
604  {
605  if (IsEndWrd() || IsSttPara())
606  PrvWrdForDelete(); // #i92468#
607  else
608  SttWrd();
609  }
610  bool bRet = Delete();
611  if( bRet )
612  UpdateAttr();
613  else
614  SwapPam();
615  ClearMark();
616 }
617 
618 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
long GetLeft() const
Starts a section of nodes in the document model.
Definition: node.hxx:303
void EnterBlockMode()
Definition: select.cxx:655
void KillPams()
Definition: crsrsh.cxx:1009
SwMoveFnCollection const & fnParaEnd
Definition: paminit.cxx:47
SwNode & GetNode(bool bPoint=true) const
Definition: pam.hxx:223
virtual const SwFlyFrameFormat * GetFormat() const override
Definition: fly.cxx:2814
virtual ::sw::mark::IFieldmark * getFieldmarkAt(const SwPosition &rPos) const =0
get Fieldmark for CH_TXT_ATR_FIELDSTART/CH_TXT_ATR_FIELDEND at rPos
void ResetCursorStack()
Definition: wrtsh.hxx:620
Marks a position in the document model.
Definition: pam.hxx:35
const SwField * GetField() const
Definition: fmtfld.hxx:70
bool Right(sal_uInt16 nCnt, sal_uInt16 nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:355
bool DelFullPara()
Remove a complete paragraph.
Definition: eddel.cxx:337
SwPaM * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
Definition: crsrsh.cxx:184
void DelToStartOfPara()
Definition: delete.cxx:507
bool GoCurrPara(SwPaM &rPam, SwMoveFnCollection const &aPosPara)
Definition: pam.cxx:947
void DelNxtWord()
Definition: delete.cxx:571
short GetTextFirstLineOfst() const
sal_Unicode GetChar(bool bEnd=true, long nOffset=0)
get the nth character of the current SSelection
Definition: crsrsh.cxx:2563
bool IsSttPara() const
Definition: crsrsh.cxx:1082
bool IsStartOfDoc() const
Definition: crsrsh.cxx:2715
void SetAttrSet(const SfxItemSet &, SetAttrMode nFlags=SetAttrMode::DEFAULT, SwPaM *pCursor=nullptr, const bool bParagraphSetting=false)
Definition: edatmisc.cxx:152
bool Pop(SwCursorShell::PopMode=SwCursorShell::PopMode::DeleteStack)
Definition: wrtsh1.cxx:1726
SwCursor * GetSwCursor() const
Definition: crsrsh.hxx:872
SwMoveFnCollection const & fnParaStart
Definition: paminit.cxx:46
void UpdateAttr()
Definition: crsrsh.hxx:761
SAL_DLLPRIVATE void EndWrd()
Definition: wrtsh4.cxx:50
bool Left(sal_uInt16 nCnt, sal_uInt16 nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:353
void EnterStdMode()
Definition: select.cxx:555
SAL_DLLPRIVATE bool FwdSentence_()
Definition: wrtsh4.cxx:174
SwFlyFrame * GetSelectedFlyFrame() const
Definition: fefly1.cxx:281
void DelToEndOfLine()
Definition: delete.cxx:121
void EndAllAction()
Definition: edws.cxx:96
bool GotoNextFly(GotoObjFlags eType=GotoObjFlags::FlyAny)
Independent selecting of flys.
Definition: fesh.hxx:409
bool DelRight()
Definition: delete.cxx:285
void SwapPam()
Definition: crsrsh.cxx:963
void SetDrawFuncPtr(std::unique_ptr< SwDrawBase > pFuncPtr)
Definition: viewdraw.cxx:642
Point TopLeft() const
Definition: swrect.cxx:174
const SwView & GetView() const
Definition: wrtsh.hxx:428
void SetLeft(const long nL, const sal_uInt16 nProp=100)
rtl::Reference< SwDoc > mxDoc
The document; never 0.
Definition: viewsh.hxx:174
SwIndex nContent
Definition: pam.hxx:38
static bool isCJKIVSCharacter(sal_uInt32 nCode)
void NormalizePam(bool bPointFirst=true)
Ensure point and mark of the current PaM are in a specific order.
Definition: crsrsh.cxx:957
bool IsBlockMode() const
Definition: wrtsh.hxx:161
SwDoc * GetDoc() const
Definition: viewsh.hxx:284
const SwFormatField & GetFormatField() const
Definition: txatbase.hxx:191
const IDocumentMarkAccess * getIDocumentMarkAccess() const
Provides access to the document bookmark interface.
Definition: viewsh.cxx:2595
static bool isIVSSelector(sal_uInt32 nCode)
virtual void Deactivate()
Definition: drawbase.cxx:441
virtual std::unique_ptr< ILazyDeleter > deleteMark(const IDocumentMarkAccess::const_iterator_t &ppMark)=0
Deletes a mark.
bool MovePara(SwWhichPara, SwMoveFnCollection const &)
Definition: crsrsh.cxx:683
const SfxItemPool & GetAttrPool() const
Definition: viewsh.hxx:614
Class for automated call of Start- and EndAction().
Definition: editsh.hxx:1020
bool IsSelection() const
Definition: crsrsh.hxx:883
bool LeftMargin()
Definition: crsrsh.hxx:359
const SwTableNode * IsCursorInTable() const
Definition: crsrsh.hxx:893
Style of a layout element.
Definition: frmfmt.hxx:57
virtual SwPaM & GetCurrentShellCursor() override
Return the current shell cursor.
Definition: crsrsh.cxx:175
SvtScriptType GetScriptType() const
returns the script type of the selection
Definition: edattr.cxx:671
bool HasSelection() const
Definition: wrtsh.hxx:141
const SwFormatAnchor & GetAnchor(bool=true) const
Definition: fmtanchr.hxx:81
const SwPosition * GetPoint() const
Definition: pam.hxx:207
RndStdIds GetAnchorId() const
Definition: fmtanchr.hxx:65
const SwPosition * GetContentAnchor() const
Definition: fmtanchr.hxx:67
void Push()
store a copy of the current cursor on the cursor stack
Definition: crsrsh.cxx:2221
bool IsEndOfTable() const
at the very last SwPosition inside a table
Definition: crsrsh.cxx:1120
SAL_DLLPRIVATE bool BwdSentence_()
Definition: wrtsh4.cxx:191
void DelLine()
Description: Erase the line.
Definition: delete.cxx:96
bool RightMargin(bool bAPI=false)
Definition: crsrsh.hxx:360
void DelToStartOfLine()
Definition: delete.cxx:113
void SetMark()
Definition: crsrsh.hxx:879
SAL_DLLPRIVATE void CloseMark(bool bOkFlag)
Definition: delete.cxx:43
SAL_DLLPRIVATE bool PrvWrdForDelete()
Definition: wrtsh4.cxx:152
SwTextField * GetFieldTextAttrAt(const sal_Int32 nIndex, const bool bIncludeInputFieldAtStart=false) const
Definition: ndtxt.cxx:1770
bool DelLeft()
Definition: delete.cxx:129
void DelPrvWord()
Definition: delete.cxx:594
void LeaveDrawCreate()
Definition: view.hxx:525
SwDrawBase * GetDrawFuncPtr() const
Definition: view.hxx:513
SAL_DLLPRIVATE void SttWrd()
Definition: wrtsh4.cxx:30
#define RES_LR_SPACE
Definition: hintids.hxx:198
bool IsStartWord(sal_Int16 nWordType=css::i18n::WordType::ANYWORD_IGNOREWHITESPACES) const
Definition: crstrvl1.cxx:27
bool Delete()
Delete content of all ranges.
Definition: eddel.cxx:117
SelectionType
Definition: wrtsh.hxx:58
bool DelToEndOfSentence()
Definition: delete.cxx:537
const sal_uInt16 CRSR_SKIP_CELLS
Definition: swcrsr.hxx:64
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:79
void SetTextFirstLineOfst(const short nF, const sal_uInt16 nProp=100)
general base class for all free-flowing frames
Definition: flyfrm.hxx:60
SAL_DLLPRIVATE void OpenMark()
Definition: delete.cxx:35
OUString GetSelText() const
get selected text of a node at current cursor
Definition: crsrsh.cxx:2507
SwRect GetObjRect() const
For adjustment of PosAttr when anchor changes.
Definition: fefly1.cxx:1261
void DelSelectedObj()
Definition: feshview.cxx:2297
void UnSelectFrame()
Definition: select.cxx:327
SAL_DLLPRIVATE long SetCursor(const Point *, bool bProp=false)
Definition: select.cxx:308
virtual const SwPosition & GetMarkEnd() const =0
void ClearMark()
Definition: crsrsh.cxx:926
bool GetCurAttr(SfxItemSet &, const bool bMergeIndentValuesOfNumRule=false) const
Definition: edattr.cxx:181
const SwStartNode * FindTableBoxStartNode() const
Definition: node.hxx:196
void LeaveSelFrameMode()
Definition: select.cxx:724
static void DeleteFieldmarkCommand(::sw::mark::IFieldmark const &rMark)
Definition: docbm.cxx:522
bool IsEndOfDoc() const
Definition: crsrsh.cxx:2727
bool IsEndWrd()
Definition: wrtsh1.cxx:175
const sal_uInt16 CRSR_SKIP_CHARS
Definition: swcrsr.hxx:63
RndStdIds
void EnterSelFrameMode(const Point *pStartDrag=nullptr)
Definition: select.cxx:706
virtual const SwPosition & GetMarkStart() const =0
bool IsEndPara() const
Definition: crsrsh.cxx:1101
bool Pop(PopMode)
delete cursor
Definition: crsrsh.cxx:2243
SelectionType GetSelectionType() const
Definition: wrtsh1.cxx:1406
bool TryRemoveIndent()
Definition: delete.cxx:57
void StartAllAction()
For all views of this document.
Definition: edws.cxx:85
void DelToEndOfPara()
Definition: delete.cxx:490
bool IsFrameSelected() const
Definition: feshview.cxx:1175
SAL_DLLPRIVATE bool NxtWrdForDelete()
Definition: wrtsh4.cxx:129
void DelToStartOfSentence()
Definition: delete.cxx:528
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
Definition: ndtxt.hxx:842