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 #include <doc.hxx>
35 
36 inline void SwWrtShell::OpenMark()
37 {
40  KillPams();
41  SetMark();
42 }
43 
44 inline void SwWrtShell::CloseMark( bool bOkFlag )
45 {
46  if( bOkFlag )
47  UpdateAttr();
48  else
49  SwapPam();
50 
51  ClearMark();
52  EndAllAction();
53 }
54 
55 
56 
57 // #i23725#
59 {
60  bool bResult = false;
61 
63  GetCurAttr(aAttrSet);
64 
65  SvxLRSpaceItem aItem = aAttrSet.Get(RES_LR_SPACE);
66  short aOldFirstLineOfst = aItem.GetTextFirstLineOffset();
67 
68  if (aOldFirstLineOfst > 0)
69  {
70  aItem.SetTextFirstLineOffset(0);
71  bResult = true;
72  }
73  else if (aOldFirstLineOfst < 0)
74  {
75  aItem.SetTextFirstLineOffset(0);
76  aItem.SetLeft(aItem.GetLeft() + aOldFirstLineOfst);
77 
78  bResult = true;
79  }
80  else if (aItem.GetLeft() != 0)
81  {
82  aItem.SetLeft(0);
83  bResult = true;
84  }
85 
86  if (bResult)
87  {
88  aAttrSet.Put(aItem);
89  SetAttrSet(aAttrSet);
90  }
91 
92  return bResult;
93 }
94 
98 {
99  SwActContext aActContext(this);
101  // remember the old cursor
102  Push();
103  ClearMark();
105  SetMark();
107 
108  bool bRet = Delete();
110  if( bRet )
111  UpdateAttr();
112 }
113 
115 {
116  OpenMark();
118  bool bRet = Delete();
119  CloseMark( bRet );
120 }
121 
123 {
124  OpenMark();
126  bool bRet = Delete();
127  CloseMark( bRet );
128 }
129 
131 {
132  // If it's a Fly, throw it away
133  SelectionType nSelType = GetSelectionType();
135  if( nCmp & nSelType )
136  {
137  // #108205# Remember object's position.
138  Point aTmpPt = GetObjRect().TopLeft();
139 
140  DelSelectedObj();
141 
142  // #108205# Set cursor to remembered position.
143  SetCursor(&aTmpPt);
144 
146  UnSelectFrame();
147 
148  nSelType = GetSelectionType();
149  if ( nCmp & nSelType )
150  {
152  GotoNextFly();
153  }
154 
155  return true;
156  }
157 
158  // If a selection exists, erase this
159  if ( IsSelection() )
160  {
161  if( !IsBlockMode() || HasSelection() )
162  {
163  //OS: Once again Basic: SwActContext must be leaved
164  //before EnterStdMode!
165  {
166  SwActContext aActContext(this);
168  Delete();
169  UpdateAttr();
170  }
171  if( IsBlockMode() )
172  {
173  NormalizePam();
174  ClearMark();
175  EnterBlockMode();
176  }
177  else
178  EnterStdMode();
179  return true;
180  }
181  else
182  EnterStdMode();
183  }
184 
185  // JP 29.06.95: never erase a table standing in front of it.
186  bool bSwap = false;
187  const SwTableNode * pWasInTableNd = SwCursorShell::IsCursorInTable();
188 
190  {
191  // Start/EndAllAction to avoid cursor flickering
194 
195  // #i4032# Don't actually call a 'delete' if we
196  // changed the table cell, compare DelRight().
197  const SwStartNode * pSNdOld = pWasInTableNd ?
199  nullptr;
200 
201  // If the cursor is at the beginning of a paragraph, try to step
202  // backwards. On failure we are done.
203  bool bDoSomething = SwCursorShell::Left(1,CRSR_SKIP_CHARS);
204 
205  if (bDoSomething)
206  {
207  // If the cursor entered or left a table (or both) we are done.
208  const SwTableNode* pIsInTableNd = SwCursorShell::IsCursorInTable();
209  bDoSomething = pIsInTableNd == pWasInTableNd;
210 
211  if (bDoSomething)
212  {
213  const SwStartNode* pSNdNew = pIsInTableNd ?
215  nullptr;
216 
217  // #i4032# Don't actually call a 'delete' if we
218  // changed the table cell, compare DelRight().
219  bDoSomething = pSNdOld == pSNdNew;
220  }
221  }
222 
223  if (!bDoSomething)
224  {
225  // tdf#115132 Restore previous position and we are done
227  return false;
228  }
229 
231 
232  OpenMark();
235  bSwap = true;
236  }
237  else
238  {
239  // If we are just to the right to a fieldmark, then remove it completely
240  const SwPosition* pCurPos = GetCursor()->GetPoint();
241  SwPosition aPrevChar(*pCurPos);
242  --aPrevChar.nContent;
244  if (pFm && pFm->GetMarkEnd() == *pCurPos)
245  {
246  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
249  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
250  return true;
251  }
252 
253  OpenMark();
255  if (SvtScriptType::ASIAN == GetScriptType())
256  {
257  sal_uInt32 nCode = GetChar(false);
258  if ( rtl::isSurrogate( nCode ) )
259  {
260  OUString sStr = GetSelText();
261  sal_Int32 nIndex = 0;
262  nCode = sStr.iterateCodePoints( &nIndex );
263  }
264 
265  if ( unicode::isIVSSelector( nCode ) )
266  {
269  OUString sStr = GetSelText();
270  sal_Int32 nIndex = 0;
271  nCode = sStr.iterateCodePoints( &nIndex );
272  if ( unicode::isCJKIVSCharacter( nCode ) )
274  else
276  }
277  }
278  }
279  bool bRet = Delete();
280  if( !bRet && bSwap )
282  CloseMark( bRet );
283  if (!bRet)
284  { // false indicates HasReadonlySel failed
285  std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetView().GetFrameWeld(), "modules/swriter/ui/inforeadonlydialog.ui"));
286  std::unique_ptr<weld::MessageDialog> xInfo(xBuilder->weld_message_dialog("InfoReadonlyDialog"));
287  xInfo->run();
288  }
289  return bRet;
290 }
291 
293 {
294  // Will be or'ed, if a tableselection exists;
295  // will here be implemented on SelectionType::Table
296  bool bRet = false;
297  SelectionType nSelection = GetSelectionType();
298  if(nSelection & SelectionType::TableCell)
299  nSelection = SelectionType::Table;
300  if(nSelection & SelectionType::Text)
301  nSelection = SelectionType::Text;
302 
303  switch( nSelection & ~SelectionType::Ornament )
304  {
306  case SelectionType::Text:
309  // If a selection exists, erase it.
310  if( IsSelection() )
311  {
312  if( !IsBlockMode() || HasSelection() )
313  {
314  //OS: And once again Basic: SwActContext must be
315  //leaved before EnterStdMode !
316  {
317  SwActContext aActContext(this);
319  Delete();
320  UpdateAttr();
321  }
322  if( IsBlockMode() )
323  {
324  NormalizePam();
325  ClearMark();
326  EnterBlockMode();
327  }
328  else
329  EnterStdMode();
330  bRet = true;
331  break;
332  }
333  else
334  EnterStdMode();
335  }
336 
338  {
339  // Start/EndAllAction to avoid cursor flickering
341 
342  const SwTableNode* pWasInTableNd = IsCursorInTable();
343  // #108049# Save the startnode of the current cell
344  const SwStartNode* pSNdOld = pWasInTableNd ?
345  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
346  bool bCheckDelFull = SelectionType::Text & nSelection && SwCursorShell::IsSttPara();
347  bool bDelFull = false;
348  bool bDoNothing = false;
349 
350  // #i41424# Introduced a couple of
351  // Push()-Pop() pairs here. The reason for this is that a
352  // Right()-Left() combination does not make sure, that
353  // the cursor will be in its initial state, because there
354  // may be a numbering in front of the next paragraph.
356 
358  {
359  const SwTableNode* pCurrTableNd = IsCursorInTable();
360  bDelFull = bCheckDelFull && pCurrTableNd && pCurrTableNd != pWasInTableNd;
361  if (!bDelFull && (IsCursorInTable() || (pCurrTableNd != pWasInTableNd)))
362  {
363  // #108049# Save the startnode of the current cell.
364  // May be different to pSNdOld as we have moved.
365  const SwStartNode* pSNdNew = pCurrTableNd ?
366  GetSwCursor()->GetNode().FindTableBoxStartNode() : nullptr;
367 
368  // tdf#115132 Only keep cursor position instead of deleting
369  // if we have moved to a different cell
370  bDoNothing = pSNdOld != pSNdNew;
371  }
372  }
373 
374  // restore cursor
376 
377  if (bDelFull)
378  {
379  DelFullPara();
380  UpdateAttr();
381  }
382  if (bDelFull || bDoNothing)
383  break;
384  }
385 
386  {
387  // If we are just ahead of a fieldmark, then remove it completely
389  if (pFm && pFm->GetMarkStart() == *GetCursor()->GetPoint())
390  {
391  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
394  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
395  bRet = true;
396  break;
397  }
398  }
399 
400  OpenMark();
402  bRet = Delete();
403  CloseMark( bRet );
404  if (!bRet)
405  { // false indicates HasReadonlySel failed
406  std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetView().GetFrameWeld(), "modules/swriter/ui/inforeadonlydialog.ui"));
407  std::unique_ptr<weld::MessageDialog> xInfo(xBuilder->weld_message_dialog("InfoReadonlyDialog"));
408  xInfo->run();
409  }
410  break;
411 
414  case SelectionType::Ole:
418  {
419  // #108205# Remember object's position.
420  Point aTmpPt = GetObjRect().TopLeft();
421 
422  // Remember the anchor of the selected object before deletion.
423  std::unique_ptr<SwPosition> pAnchor;
425  if (pFly)
426  {
427  SwFrameFormat* pFormat = pFly->GetFormat();
428  if (pFormat)
429  {
430  RndStdIds eAnchorId = pFormat->GetAnchor().GetAnchorId();
431  if ((eAnchorId == RndStdIds::FLY_AS_CHAR || eAnchorId == RndStdIds::FLY_AT_CHAR)
432  && pFormat->GetAnchor().GetContentAnchor())
433  {
434  pAnchor.reset(new SwPosition(*pFormat->GetAnchor().GetContentAnchor()));
435  }
436  }
437  }
438 
439  // Group deletion of the object and its comment together.
440  mxDoc->GetIDocumentUndoRedo().StartUndo(SwUndoId::EMPTY, nullptr);
441 
442  DelSelectedObj();
443 
444  if (pAnchor)
445  {
446  SwTextNode* pTextNode = pAnchor->nNode.GetNode().GetTextNode();
447  if (pTextNode)
448  {
449  const SwTextField* pField(
450  pTextNode->GetFieldTextAttrAt(pAnchor->nContent.GetIndex(), true));
451  if (pField
452  && dynamic_cast<const SwPostItField*>(pField->GetFormatField().GetField()))
453  {
454  // Remove the comment of the deleted object.
455  *GetCurrentShellCursor().GetPoint() = *pAnchor;
456  DelRight();
457  }
458  }
459  }
460 
461  mxDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::EMPTY, nullptr);
462 
463  // #108205# Set cursor to remembered position.
464  SetCursor(&aTmpPt);
465 
467  UnSelectFrame();
468  OSL_ENSURE( !IsFrameSelected(),
469  "<SwWrtShell::DelRight(..)> - <SwWrtShell::UnSelectFrame()> should unmark all objects" );
470  // leave draw mode, if necessary.
471  {
472  if (GetView().GetDrawFuncPtr())
473  {
475  GetView().SetDrawFuncPtr(nullptr);
476  }
477  if ( GetView().IsDrawMode() )
478  {
480  }
481  }
482  }
483 
484  // <IsFrameSelected()> can't be true - see above.
485  {
486  nSelection = GetSelectionType();
487  if ( SelectionType::Frame & nSelection ||
488  SelectionType::Graphic & nSelection ||
489  SelectionType::Ole & nSelection ||
490  SelectionType::DrawObject & nSelection )
491  {
493  GotoNextFly();
494  }
495  }
496  bRet = true;
497  break;
498  default: break;
499  }
500  return bRet;
501 }
502 
504 {
505  SwActContext aActContext(this);
507  Push();
508  SetMark();
510  {
512  return;
513  }
514  bool bRet = Delete();
516  if( bRet )
517  UpdateAttr();
518 }
519 
521 {
522  SwActContext aActContext(this);
524  Push();
525  SetMark();
527  {
529  return;
530  }
531  bool bRet = Delete();
533  if( bRet )
534  UpdateAttr();
535 }
536 
537 // All erase operations should work with Find instead with
538 // Nxt-/PrvDelim, because the latter works with Wrap Around
539 // -- that's probably not wished.
540 
542 {
543  if(IsStartOfDoc())
544  return;
545  OpenMark();
546  bool bRet = BwdSentence_() && Delete();
547  CloseMark( bRet );
548 }
549 
551 {
552  if(IsEndOfDoc())
553  return false;
554  OpenMark();
555  bool bRet(false);
556  // fdo#60967: special case that is documented in help: delete
557  // paragraph following table if cursor is at end of last cell in table
558  if (IsEndOfTable())
559  {
560  Push();
561  ClearMark();
563  {
564  SetMark();
565  if (!IsEndPara()) // can only be at the end if it's empty
566  { // for an empty paragraph this would actually select the _next_
568  }
569  if (!IsEndOfDoc()) // do not delete last paragraph in body text
570  {
571  bRet = DelFullPara();
572  }
573  }
575  }
576  else
577  {
578  bRet = FwdSentence_() && Delete();
579  }
580  CloseMark( bRet );
581  return bRet;
582 }
583 
585 {
586  if(IsEndOfDoc())
587  return;
588  SwActContext aActContext(this);
590  EnterStdMode();
591  SetMark();
592  if(IsEndWrd() && !IsStartWord())
593  NxtWrdForDelete(); // #i92468#
594  if(IsStartWord() || IsEndPara())
595  NxtWrdForDelete(); // #i92468#
596  else
597  EndWrd();
598 
599  bool bRet = Delete();
600  if( bRet )
601  UpdateAttr();
602  else
603  SwapPam();
604  ClearMark();
605 }
606 
608 {
609  if(IsStartOfDoc())
610  return;
611  SwActContext aActContext(this);
613  EnterStdMode();
614  SetMark();
615  if ( !IsStartWord() ||
616  !PrvWrdForDelete() ) // #i92468#
617  {
618  if (IsEndWrd() || IsSttPara())
619  PrvWrdForDelete(); // #i92468#
620  else
621  SttWrd();
622  }
623  bool bRet = Delete();
624  if( bRet )
625  UpdateAttr();
626  else
627  SwapPam();
628  ClearMark();
629 }
630 
631 /* 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:650
void KillPams()
Definition: crsrsh.cxx:1021
SwMoveFnCollection const & fnParaEnd
Definition: paminit.cxx:47
SwNode & GetNode(bool bPoint=true) const
Definition: pam.hxx:223
sal_Int32 nIndex
virtual const SwFlyFrameFormat * GetFormat() const override
Definition: fly.cxx:2800
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:111
bool Right(sal_uInt16 nCnt, sal_uInt16 nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:351
bool DelFullPara()
Remove a complete paragraph.
Definition: eddel.cxx:345
SwPaM * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
Definition: crsrsh.cxx:189
void DelToStartOfPara()
Definition: delete.cxx:520
bool GoCurrPara(SwPaM &rPam, SwMoveFnCollection const &aPosPara)
Definition: pam.cxx:1009
void DelNxtWord()
Definition: delete.cxx:584
sal_Unicode GetChar(bool bEnd=true, long nOffset=0)
get the nth character of the current SSelection
Definition: crsrsh.cxx:2582
bool IsSttPara() const
Definition: crsrsh.cxx:1094
bool IsStartOfDoc() const
Definition: crsrsh.cxx:2734
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:1708
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
void EnterStdMode()
Definition: select.cxx:550
SAL_DLLPRIVATE bool FwdSentence_()
Definition: wrtsh4.cxx:174
SwFlyFrame * GetSelectedFlyFrame() const
Definition: fefly1.cxx:275
void DelToEndOfLine()
Definition: delete.cxx:122
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:292
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
void SetLeft(const long nL, const sal_uInt16 nProp=100)
rtl::Reference< SwDoc > mxDoc
The document; never 0.
Definition: viewsh.hxx:172
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:282
const SwFormatField & GetFormatField() const
Definition: txatbase.hxx:191
const IDocumentMarkAccess * getIDocumentMarkAccess() const
Provides access to the document bookmark interface.
Definition: viewsh.cxx:2587
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:20
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:57
virtual SwPaM & GetCurrentShellCursor() override
Return the current shell cursor.
Definition: crsrsh.cxx:180
SvtScriptType GetScriptType() const
returns the script type of the selection
Definition: edattr.cxx:669
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:97
void SetTextFirstLineOffset(const short nF, const sal_uInt16 nProp=100)
bool RightMargin(bool bAPI=false)
Definition: crsrsh.hxx:356
void DelToStartOfLine()
Definition: delete.cxx:114
short GetTextFirstLineOffset() const
void SetMark()
Definition: crsrsh.hxx:875
SAL_DLLPRIVATE void CloseMark(bool bOkFlag)
Definition: delete.cxx:44
SAL_DLLPRIVATE bool PrvWrdForDelete()
Definition: wrtsh4.cxx:152
SwTextField * GetFieldTextAttrAt(const sal_Int32 nIndex, const bool bIncludeInputFieldAtStart=false) const
Definition: ndtxt.cxx:1765
bool DelLeft()
Definition: delete.cxx:130
void DelPrvWord()
Definition: delete.cxx:607
void LeaveDrawCreate()
Definition: view.hxx:523
SwDrawBase * GetDrawFuncPtr() const
Definition: view.hxx:511
SAL_DLLPRIVATE void SttWrd()
Definition: wrtsh4.cxx:30
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:550
const sal_uInt16 CRSR_SKIP_CELLS
Definition: swcrsr.hxx:64
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:36
OUString GetSelText() const
get selected text of a node at current cursor
Definition: crsrsh.cxx:2526
SwRect GetObjRect() const
For adjustment of PosAttr when anchor changes.
Definition: fefly1.cxx:1272
void DelSelectedObj()
Definition: feshview.cxx:2281
void UnSelectFrame()
Definition: select.cxx:322
SAL_DLLPRIVATE long SetCursor(const Point *, bool bProp=false)
Definition: select.cxx:303
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:176
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:522
bool IsEndOfDoc() const
Definition: crsrsh.cxx:2746
bool IsEndWrd()
Definition: wrtsh1.cxx:157
const sal_uInt16 CRSR_SKIP_CHARS
Definition: swcrsr.hxx:63
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:1388
bool TryRemoveIndent()
Definition: delete.cxx:58
void StartAllAction()
For all views of this document.
Definition: edws.cxx:86
void DelToEndOfPara()
Definition: delete.cxx:503
bool IsFrameSelected() const
Definition: feshview.cxx:1158
SAL_DLLPRIVATE bool NxtWrdForDelete()
Definition: wrtsh4.cxx:129
void DelToStartOfSentence()
Definition: delete.cxx:541
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
Definition: ndtxt.hxx:836