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 <o3tl/temporary.hxx>
34 #include <rtl/character.hxx>
35 #include <doc.hxx>
36 
37 inline void SwWrtShell::OpenMark()
38 {
41  KillPams();
42  SetMark();
43 }
44 
45 inline void SwWrtShell::CloseMark( bool bOkFlag )
46 {
47  if( bOkFlag )
48  UpdateAttr();
49  else
50  SwapPam();
51 
52  ClearMark();
53  EndAllAction();
54 }
55 
56 
57 
58 // #i23725#
60 {
61  bool bResult = false;
62 
64  GetCurAttr(aAttrSet);
65 
66  SvxLRSpaceItem aItem = aAttrSet.Get(RES_LR_SPACE);
67  short aOldFirstLineOfst = aItem.GetTextFirstLineOffset();
68 
69  if (aOldFirstLineOfst > 0)
70  {
71  aItem.SetTextFirstLineOffset(0);
72  bResult = true;
73  }
74  else if (aOldFirstLineOfst < 0)
75  {
76  aItem.SetTextFirstLineOffset(0);
77  aItem.SetLeft(aItem.GetLeft() + aOldFirstLineOfst);
78 
79  bResult = true;
80  }
81  else if (aItem.GetLeft() != 0)
82  {
83  aItem.SetLeft(0);
84  bResult = true;
85  }
86 
87  if (bResult)
88  {
89  aAttrSet.Put(aItem);
90  SetAttrSet(aAttrSet);
91  }
92 
93  return bResult;
94 }
95 
99 {
100  SwActContext aActContext(this);
102  // remember the old cursor
103  Push();
104  ClearMark();
106  SetMark();
108 
109  bool bRet = Delete();
111  if( bRet )
112  UpdateAttr();
113 }
114 
116 {
117  OpenMark();
119  bool bRet = Delete();
120  CloseMark( bRet );
121 }
122 
124 {
125  OpenMark();
127  bool bRet = Delete();
128  CloseMark( bRet );
129 }
130 
132 {
133  // If it's a Fly, throw it away
134  SelectionType nSelType = GetSelectionType();
136  if( nCmp & nSelType )
137  {
138  // #108205# Remember object's position.
139  Point aTmpPt = GetObjRect().TopLeft();
140 
141  DelSelectedObj();
142 
143  // #108205# Set cursor to remembered position.
144  SetCursor(&aTmpPt);
145 
147  UnSelectFrame();
148 
149  nSelType = GetSelectionType();
150  if ( nCmp & nSelType )
151  {
153  GotoNextFly();
154  }
155 
156  return true;
157  }
158 
159  // If a selection exists, erase this
160  if ( IsSelection() )
161  {
162  if( !IsBlockMode() || HasSelection() )
163  {
164  //OS: Once again Basic: SwActContext must be leaved
165  //before EnterStdMode!
166  {
167  SwActContext aActContext(this);
169  Delete();
170  UpdateAttr();
171  }
172  if( IsBlockMode() )
173  {
174  NormalizePam();
175  ClearMark();
176  EnterBlockMode();
177  }
178  else
179  EnterStdMode();
180  return true;
181  }
182  else
183  EnterStdMode();
184  }
185 
186  // JP 29.06.95: never erase a table standing in front of it.
187  bool bSwap = false;
188  const SwTableNode * pWasInTableNd = SwCursorShell::IsCursorInTable();
189 
191  {
192  // Start/EndAllAction to avoid cursor flickering
195 
196  // #i4032# Don't actually call a 'delete' if we
197  // changed the table cell, compare DelRight().
198  const SwStartNode * pSNdOld = pWasInTableNd ?
200  nullptr;
201 
202  // If the cursor is at the beginning of a paragraph, try to step
203  // backwards. On failure we are done.
204  bool bDoSomething = SwCursorShell::Left(1,CRSR_SKIP_CHARS);
205 
206  if (bDoSomething)
207  {
208  // If the cursor entered or left a table (or both) we are done.
209  const SwTableNode* pIsInTableNd = SwCursorShell::IsCursorInTable();
210  bDoSomething = pIsInTableNd == pWasInTableNd;
211 
212  if (bDoSomething)
213  {
214  const SwStartNode* pSNdNew = pIsInTableNd ?
216  nullptr;
217 
218  // #i4032# Don't actually call a 'delete' if we
219  // changed the table cell, compare DelRight().
220  bDoSomething = pSNdOld == pSNdNew;
221  }
222  }
223 
224  if (!bDoSomething)
225  {
226  // tdf#115132 Restore previous position and we are done
228  return false;
229  }
230 
232 
233  OpenMark();
236  bSwap = true;
237  }
238  else
239  {
240  // If we are just to the right to a fieldmark, then remove it completely
241  const SwPosition* pCurPos = GetCursor()->GetPoint();
242  SwPosition aPrevChar(*pCurPos);
243  --aPrevChar.nContent;
245  if (pFm && pFm->GetMarkEnd() == *pCurPos)
246  {
247  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
250  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
251  return true;
252  }
253 
254  OpenMark();
256  if (SvtScriptType::ASIAN == GetScriptType())
257  {
258  sal_uInt32 nCode = GetChar(false);
259  if ( rtl::isSurrogate( nCode ) )
260  {
261  OUString sStr = GetSelText();
262  nCode = sStr.iterateCodePoints( &o3tl::temporary(sal_Int32(0)) );
263  }
264 
265  if ( unicode::isIVSSelector( nCode ) )
266  {
269  OUString sStr = GetSelText();
270  nCode = sStr.iterateCodePoints( &o3tl::temporary(sal_Int32(0)) );
271  if ( unicode::isCJKIVSCharacter( nCode ) )
273  else
275  }
276  }
277  }
278  bool bRet = Delete();
279  if( !bRet && bSwap )
281  CloseMark( bRet );
282  if (!bRet)
283  { // false indicates HasReadonlySel failed
284  std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetView().GetFrameWeld(), "modules/swriter/ui/inforeadonlydialog.ui"));
285  std::unique_ptr<weld::MessageDialog> xInfo(xBuilder->weld_message_dialog("InfoReadonlyDialog"));
286  xInfo->run();
287  }
288  return bRet;
289 }
290 
292 {
293  // Will be or'ed, if a tableselection exists;
294  // will here be implemented on SelectionType::Table
295  bool bRet = false;
296  SelectionType nSelection = GetSelectionType();
297  if(nSelection & SelectionType::TableCell)
298  nSelection = SelectionType::Table;
299  if(nSelection & SelectionType::Text)
300  nSelection = SelectionType::Text;
301 
302  switch( nSelection & ~SelectionType::Ornament )
303  {
305  case SelectionType::Text:
308  // If a selection exists, erase it.
309  if( IsSelection() )
310  {
311  if( !IsBlockMode() || HasSelection() )
312  {
313  //OS: And once again Basic: SwActContext must be
314  //leaved before EnterStdMode !
315  {
316  SwActContext aActContext(this);
318  Delete();
319  UpdateAttr();
320  }
321  if( IsBlockMode() )
322  {
323  NormalizePam();
324  ClearMark();
325  EnterBlockMode();
326  }
327  else
328  EnterStdMode();
329  bRet = true;
330  break;
331  }
332  else
333  EnterStdMode();
334  }
335 
337  {
338  // Start/EndAllAction to avoid cursor flickering
340 
341  const SwTableNode* pWasInTableNd = IsCursorInTable();
342  // #108049# Save the startnode of the current cell
343  const SwStartNode* pSNdOld = pWasInTableNd ?
344  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
345  bool bCheckDelFull = SelectionType::Text & nSelection && SwCursorShell::IsSttPara();
346  bool bDelFull = false;
347  bool bDoNothing = false;
348 
349  // #i41424# Introduced a couple of
350  // Push()-Pop() pairs here. The reason for this is that a
351  // Right()-Left() combination does not make sure, that
352  // the cursor will be in its initial state, because there
353  // may be a numbering in front of the next paragraph.
355 
357  {
358  const SwTableNode* pCurrTableNd = IsCursorInTable();
359  bDelFull = bCheckDelFull && pCurrTableNd && pCurrTableNd != pWasInTableNd;
360  if (!bDelFull && (IsCursorInTable() || (pCurrTableNd != pWasInTableNd)))
361  {
362  // #108049# Save the startnode of the current cell.
363  // May be different to pSNdOld as we have moved.
364  const SwStartNode* pSNdNew = pCurrTableNd ?
365  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
366 
367  // tdf#115132 Only keep cursor position instead of deleting
368  // if we have moved to a different cell
369  bDoNothing = pSNdOld != pSNdNew;
370  }
371  }
372 
373  // restore cursor
375 
376  if (bDelFull)
377  {
378  DelFullPara();
379  UpdateAttr();
380  }
381  if (bDelFull || bDoNothing)
382  break;
383  }
384 
385  {
386  // If we are just ahead of a fieldmark, then remove it completely
388  if (pFm && pFm->GetMarkStart() == *GetCursor()->GetPoint())
389  {
390  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
393  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
394  bRet = true;
395  break;
396  }
397  }
398 
399  OpenMark();
401  bRet = Delete();
402  CloseMark( bRet );
403  if (!bRet)
404  { // false indicates HasReadonlySel failed
405  std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetView().GetFrameWeld(), "modules/swriter/ui/inforeadonlydialog.ui"));
406  std::unique_ptr<weld::MessageDialog> xInfo(xBuilder->weld_message_dialog("InfoReadonlyDialog"));
407  xInfo->run();
408  }
409  break;
410 
413  case SelectionType::Ole:
417  {
418  // #108205# Remember object's position.
419  Point aTmpPt = GetObjRect().TopLeft();
420 
421  // Remember the anchor of the selected object before deletion.
422  std::unique_ptr<SwPosition> pAnchor;
424  if (pFly)
425  {
426  SwFrameFormat* pFormat = pFly->GetFormat();
427  if (pFormat)
428  {
429  RndStdIds eAnchorId = pFormat->GetAnchor().GetAnchorId();
430  if ((eAnchorId == RndStdIds::FLY_AS_CHAR || eAnchorId == RndStdIds::FLY_AT_CHAR)
431  && pFormat->GetAnchor().GetContentAnchor())
432  {
433  pAnchor.reset(new SwPosition(*pFormat->GetAnchor().GetContentAnchor()));
434  }
435  }
436  }
437 
438  // Group deletion of the object and its comment together.
439  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
440 
441  DelSelectedObj();
442 
443  if (pAnchor)
444  {
445  SwTextNode* pTextNode = pAnchor->nNode.GetNode().GetTextNode();
446  if (pTextNode)
447  {
448  const SwTextField* pField(
449  pTextNode->GetFieldTextAttrAt(pAnchor->nContent.GetIndex(), true));
450  if (pField
451  && dynamic_cast<const SwPostItField*>(pField->GetFormatField().GetField()))
452  {
453  // Remove the comment of the deleted object.
454  *GetCurrentShellCursor().GetPoint() = *pAnchor;
455  DelRight();
456  }
457  }
458  }
459 
460  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
461 
462  // #108205# Set cursor to remembered position.
463  SetCursor(&aTmpPt);
464 
466  UnSelectFrame();
467  OSL_ENSURE( !IsFrameSelected(),
468  "<SwWrtShell::DelRight(..)> - <SwWrtShell::UnSelectFrame()> should unmark all objects" );
469  // leave draw mode, if necessary.
470  {
471  if (GetView().GetDrawFuncPtr())
472  {
474  GetView().SetDrawFuncPtr(nullptr);
475  }
476  if ( GetView().IsDrawMode() )
477  {
479  }
480  }
481  }
482 
483  // <IsFrameSelected()> can't be true - see above.
484  {
485  nSelection = GetSelectionType();
486  if ( SelectionType::Frame & nSelection ||
487  SelectionType::Graphic & nSelection ||
488  SelectionType::Ole & nSelection ||
489  SelectionType::DrawObject & nSelection )
490  {
492  GotoNextFly();
493  }
494  }
495  bRet = true;
496  break;
497  default: break;
498  }
499  return bRet;
500 }
501 
503 {
504  SwActContext aActContext(this);
506  Push();
507  SetMark();
509  {
511  return;
512  }
513  bool bRet = Delete();
515  if( bRet )
516  UpdateAttr();
517 }
518 
520 {
521  SwActContext aActContext(this);
523  Push();
524  SetMark();
526  {
528  return;
529  }
530  bool bRet = Delete();
532  if( bRet )
533  UpdateAttr();
534 }
535 
536 // All erase operations should work with Find instead with
537 // Nxt-/PrvDelim, because the latter works with Wrap Around
538 // -- that's probably not wished.
539 
541 {
542  if(IsStartOfDoc())
543  return;
544  OpenMark();
545  bool bRet = BwdSentence_() && Delete();
546  CloseMark( bRet );
547 }
548 
550 {
551  if(IsEndOfDoc())
552  return false;
553  OpenMark();
554  bool bRet(false);
555  // fdo#60967: special case that is documented in help: delete
556  // paragraph following table if cursor is at end of last cell in table
557  if (IsEndOfTable())
558  {
559  Push();
560  ClearMark();
562  {
563  SetMark();
564  if (!IsEndPara()) // can only be at the end if it's empty
565  { // for an empty paragraph this would actually select the _next_
567  }
568  if (!IsEndOfDoc()) // do not delete last paragraph in body text
569  {
570  bRet = DelFullPara();
571  }
572  }
574  }
575  else
576  {
577  bRet = FwdSentence_() && Delete();
578  }
579  CloseMark( bRet );
580  return bRet;
581 }
582 
584 {
585  if(IsEndOfDoc())
586  return;
587  SwActContext aActContext(this);
589  EnterStdMode();
590  SetMark();
591  if(IsEndWrd() && !IsStartWord())
592  NxtWrdForDelete(); // #i92468#
593  if(IsStartWord() || IsEndPara())
594  NxtWrdForDelete(); // #i92468#
595  else
596  EndWrd();
597 
598  bool bRet = Delete();
599  if( bRet )
600  UpdateAttr();
601  else
602  SwapPam();
603  ClearMark();
604 }
605 
607 {
608  if(IsStartOfDoc())
609  return;
610  SwActContext aActContext(this);
612  EnterStdMode();
613  SetMark();
614  if ( !IsStartWord() ||
615  !PrvWrdForDelete() ) // #i92468#
616  {
617  if (IsEndWrd() || IsSttPara())
618  PrvWrdForDelete(); // #i92468#
619  else
620  SttWrd();
621  }
622  bool bRet = Delete();
623  if( bRet )
624  UpdateAttr();
625  else
626  SwapPam();
627  ClearMark();
628 }
629 
630 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Starts a section of nodes in the document model.
Definition: node.hxx:311
void EnterBlockMode()
Definition: select.cxx:650
void KillPams()
Definition: crsrsh.cxx:1021
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:2858
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:625
Marks a position in the document model.
Definition: pam.hxx:35
const SwField * GetField() const
Definition: fmtfld.hxx:110
bool Right(sal_uInt16 nCnt, sal_uInt16 nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:351
bool DelFullPara()
Remove a complete paragraph.
Definition: eddel.cxx:342
SwPaM * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
Definition: crsrsh.cxx:190
void DelToStartOfPara()
Definition: delete.cxx:519
bool GoCurrPara(SwPaM &rPam, SwMoveFnCollection const &aPosPara)
Definition: pam.cxx:1010
void DelNxtWord()
Definition: delete.cxx:583
bool IsSttPara() const
Definition: crsrsh.cxx:1094
bool IsStartOfDoc() const
Definition: crsrsh.cxx:2747
void SetAttrSet(const SfxItemSet &, SetAttrMode nFlags=SetAttrMode::DEFAULT, SwPaM *pCursor=nullptr, const bool bParagraphSetting=false)
Definition: edatmisc.cxx:151
bool Pop(SwCursorShell::PopMode=SwCursorShell::PopMode::DeleteStack)
Definition: wrtsh1.cxx:1715
SwCursor * GetSwCursor() const
Definition: crsrsh.hxx:868
SwMoveFnCollection const & fnParaStart
Definition: paminit.cxx:46
static weld::Builder * CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false)
void UpdateAttr()
Definition: crsrsh.hxx:757
SAL_DLLPRIVATE void EndWrd()
Definition: wrtsh4.cxx:50
bool Left(sal_uInt16 nCnt, sal_uInt16 nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:349
sal_Unicode GetChar(bool bEnd=true, tools::Long nOffset=0)
get the nth character of the current SSelection
Definition: crsrsh.cxx:2595
void EnterStdMode()
Definition: select.cxx:550
SAL_DLLPRIVATE bool FwdSentence_()
Definition: wrtsh4.cxx:174
SwFlyFrame * GetSelectedFlyFrame() const
Definition: fefly1.cxx:274
void DelToEndOfLine()
Definition: delete.cxx:123
void EndAllAction()
Definition: edws.cxx:97
bool GotoNextFly(GotoObjFlags eType=GotoObjFlags::FlyAny)
Independent selecting of flys.
Definition: fesh.hxx:413
bool DelRight()
Definition: delete.cxx:291
void SwapPam()
Definition: crsrsh.cxx:975
void SetDrawFuncPtr(std::unique_ptr< SwDrawBase > pFuncPtr)
Definition: viewdraw.cxx:632
Point TopLeft() const
Definition: swrect.cxx:174
const SwView & GetView() const
Definition: wrtsh.hxx:428
rtl::Reference< SwDoc > mxDoc
The document; never 0.
Definition: viewsh.hxx:171
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:969
bool IsBlockMode() const
Definition: wrtsh.hxx:161
SwDoc * GetDoc() const
Definition: viewsh.hxx:281
const SwFormatField & GetFormatField() const
Definition: txatbase.hxx:191
const IDocumentMarkAccess * getIDocumentMarkAccess() const
Provides access to the document bookmark interface.
Definition: viewsh.cxx:2658
static bool isIVSSelector(sal_uInt32 nCode)
virtual void Deactivate()
Definition: drawbase.cxx:439
sal_uInt16 nCode
virtual std::unique_ptr< ILazyDeleter > deleteMark(const IDocumentMarkAccess::const_iterator_t &ppMark)=0
Deletes a mark.
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
Definition: dialoghelp.cxx:19
bool MovePara(SwWhichPara, SwMoveFnCollection const &)
Definition: crsrsh.cxx:695
const SfxItemPool & GetAttrPool() const
Definition: viewsh.hxx:612
Class for automated call of Start- and EndAction().
Definition: editsh.hxx:1018
bool IsSelection() const
Definition: crsrsh.hxx:879
bool LeftMargin()
Definition: crsrsh.hxx:355
const SwTableNode * IsCursorInTable() const
Definition: crsrsh.hxx:889
Style of a layout element.
Definition: frmfmt.hxx:58
virtual SwPaM & GetCurrentShellCursor() override
Return the current shell cursor.
Definition: crsrsh.cxx:181
SvtScriptType GetScriptType() const
returns the script type of the selection
Definition: edattr.cxx:673
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:2237
bool IsEndOfTable() const
at the very last SwPosition inside a table
Definition: crsrsh.cxx:1132
SAL_DLLPRIVATE bool BwdSentence_()
Definition: wrtsh4.cxx:191
void DelLine()
Description: Erase the line.
Definition: delete.cxx:98
tools::Long GetLeft() const
void SetTextFirstLineOffset(const short nF, const sal_uInt16 nProp=100)
bool RightMargin(bool bAPI=false)
Definition: crsrsh.hxx:356
void DelToStartOfLine()
Definition: delete.cxx:115
short GetTextFirstLineOffset() const
void SetMark()
Definition: crsrsh.hxx:875
SAL_DLLPRIVATE void CloseMark(bool bOkFlag)
Definition: delete.cxx:45
SAL_DLLPRIVATE bool PrvWrdForDelete()
Definition: wrtsh4.cxx:152
SwTextField * GetFieldTextAttrAt(const sal_Int32 nIndex, const bool bIncludeInputFieldAtStart=false) const
Definition: ndtxt.cxx:1737
bool DelLeft()
Definition: delete.cxx:131
void DelPrvWord()
Definition: delete.cxx:606
void LeaveDrawCreate()
Definition: view.hxx:524
SwDrawBase * GetDrawFuncPtr() const
Definition: view.hxx:512
SAL_DLLPRIVATE void SttWrd()
Definition: wrtsh4.cxx:30
constexpr T & temporary(T &&x)
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:125
SelectionType
Definition: wrtsh.hxx:58
bool DelToEndOfSentence()
Definition: delete.cxx:549
const sal_uInt16 CRSR_SKIP_CELLS
Definition: swcrsr.hxx:66
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:80
general base class for all free-flowing frames
Definition: flyfrm.hxx:60
SAL_DLLPRIVATE void OpenMark()
Definition: delete.cxx:37
void SetLeft(const tools::Long nL, const sal_uInt16 nProp=100)
OUString GetSelText() const
get selected text of a node at current cursor
Definition: crsrsh.cxx:2539
SwRect GetObjRect() const
For adjustment of PosAttr when anchor changes.
Definition: fefly1.cxx:1275
void DelSelectedObj()
Definition: feshview.cxx:2280
void UnSelectFrame()
Definition: select.cxx:322
constexpr TypedWhichId< SvxLRSpaceItem > RES_LR_SPACE(91)
virtual const SwPosition & GetMarkEnd() const =0
void ClearMark()
Definition: crsrsh.cxx:938
bool GetCurAttr(SfxItemSet &, const bool bMergeIndentValuesOfNumRule=false) const
Definition: edattr.cxx:177
const SwStartNode * FindTableBoxStartNode() const
Definition: node.hxx:196
void LeaveSelFrameMode()
Definition: select.cxx:719
static void DeleteFieldmarkCommand(::sw::mark::IFieldmark const &rMark)
Definition: docbm.cxx:523
bool IsEndOfDoc() const
Definition: crsrsh.cxx:2759
bool IsEndWrd()
Definition: wrtsh1.cxx:160
const sal_uInt16 CRSR_SKIP_CHARS
Definition: swcrsr.hxx:65
RndStdIds
void EnterSelFrameMode(const Point *pStartDrag=nullptr)
Definition: select.cxx:701
virtual const SwPosition & GetMarkStart() const =0
bool IsEndPara() const
Definition: crsrsh.cxx:1113
bool Pop(PopMode)
delete cursor
Definition: crsrsh.cxx:2259
SelectionType GetSelectionType() const
Definition: wrtsh1.cxx:1395
bool TryRemoveIndent()
Definition: delete.cxx:59
void StartAllAction()
For all views of this document.
Definition: edws.cxx:86
void DelToEndOfPara()
Definition: delete.cxx:502
bool IsFrameSelected() const
Definition: feshview.cxx:1157
SAL_DLLPRIVATE bool NxtWrdForDelete()
Definition: wrtsh4.cxx:129
void DelToStartOfSentence()
Definition: delete.cxx:540
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
Definition: ndtxt.hxx:846
SAL_DLLPRIVATE tools::Long SetCursor(const Point *, bool bProp=false)
Definition: select.cxx:303