LibreOffice Module sw (master) 1
crsrsh.hxx
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#ifndef INCLUDED_SW_INC_CRSRSH_HXX
20#define INCLUDED_SW_INC_CRSRSH_HXX
21
22#include <com/sun/star/i18n/WordType.hpp>
23
24#include <rtl/ustring.hxx>
25#include <tools/link.hxx>
26#include <vcl/keycod.hxx>
28
29#ifdef SW_DLLIMPLEMENTATION
30#include <TextFrameIndex.hxx>
31#endif
33#include "swdllapi.h"
34#include "docary.hxx"
35#include "viewsh.hxx"
36#include "calbck.hxx"
37#include "cshtyp.hxx"
38#include "crstate.hxx"
39#include "toxe.hxx"
40#include "tblsel.hxx"
41#include "viscrs.hxx"
42#include "node.hxx"
43#include "fldbas.hxx"
45#include <optional>
46
47class SfxItemSet;
48class SfxPoolItem;
49class SwCallLink;
50class SwContentFrame;
51class SwUnoCursor;
52class SwFormatField;
56class SwTextAttr;
57class SwTableBox;
58class SwTOXMark;
59class SwRangeRedline;
60class SwBlockCursor;
61class SwPostItField;
62class SwTextField;
63class SwTextFootnote;
65
66namespace i18nutil {
67 struct SearchOptions2;
68}
69namespace com::sun::star::text { class XTextRange; }
70namespace com::sun::star::container { class XStringKeyMap; }
71
72// enum and struct to get information via the Doc-Position
73
74enum class IsAttrAtPos
75{
76 NONE = 0x0000,
77 Field = 0x0001,
78 ClickField = 0x0002,
79 Ftn = 0x0004,
80 InetAttr = 0x0008,
81 TableBoxFml = 0x0010,
82 Redline = 0x0020,
83 Outline = 0x0040,
84 ToxMark = 0x0080,
85 RefMark = 0x0100,
86 NumLabel = 0x0200,
87 ContentCheck = 0x0400,
88 SmartTag = 0x0800,
89 FormControl = 0x1000,
90 TableRedline = 0x2000,
91 TableColRedline = 0x4000
92#ifdef DBG_UTIL
93 ,CurrAttrs = 0x8000
94 ,TableBoxValue = 0x10000
95#endif
96 , ContentControl = 0x20000
97};
98namespace o3tl {
99 template<> struct typed_flags<IsAttrAtPos> : is_typed_flags<IsAttrAtPos, 0x3ffff> {};
100}
101
103{
104 union {
109 const sw::mark::IFieldmark* pFieldmark;
112 int nDist;
113 OUString sStr;
115
117 : eContentAtPos( eGetAtPos )
118 {
119 aFnd.pField = nullptr;
120 pFndTextAttr = nullptr;
121 nDist = 0; // #i23726#
122 }
123
124 bool IsInProtectSect() const;
125 bool IsInRTLText() const;
126};
127
128// return values of SetCursor (can be combined via ||)
129const int CRSR_POSOLD = 0x01, // cursor stays at old position
130 CRSR_POSCHG = 0x02; // position changed by the layout
131
132namespace sw {
133
134bool ReplaceImpl(SwPaM & rCursor, OUString const& rReplacement,
135 bool const bRegExp, SwDoc & rDoc, SwRootFrame const*const pLayout);
136
138std::optional<OUString> ReplaceBackReferences(const i18nutil::SearchOptions2& rSearchOpt,
139 SwPaM* pPam, SwRootFrame const* pLayout );
140
141bool GetRanges(std::vector<std::shared_ptr<SwUnoCursor>> & rRanges,
142 SwDoc & rDoc, SwPaM const& rDelPam);
143
144} // namespace sw
145
147 : public SwViewShell
148 , public sw::BroadcastingModify
150{
151 friend class SwCallLink;
152 friend class SwVisibleCursor;
153 friend class SwSelPaintRects;
154
155 // requires the Cursor as InternalCursor
156 friend bool GetAutoSumSel( const SwCursorShell&, SwCellFrames& );
157
158public:
159
162 UPDOWN = (1 << 0),
163 SCROLLWIN = (1 << 1),
164 CHKRANGE = (1 << 2),
165 READONLY = (1 << 3)
166 };
167
168 SAL_DLLPRIVATE void UpdateCursor(
170 bool bIdleEnd = false );
171
172private:
173
177 // (used in Invalidate by Cursor)
178
184
188
190
196
200 SwNodeOffset m_nCurrentNode; // save CursorPos at Start-Action
203
204 /*
205 * Via the Method SttCursorMove and EndCursorMove this counter gets
206 * incremented/decremented. As long as the counter is inequal to 0, the
207 * current Cursor gets no update. This way, "complicated" cursor movements
208 * (via Find()) can be realised.
209 */
210 sal_uInt16 m_nCursorMove;
213
216
217 bool m_bHasFocus : 1;
218 bool m_bSVCursorVis : 1;
219 bool m_bChgCallFlag : 1;
220 bool m_bVisPortChgd : 1;
221 // (used in Invalidate by the Cursor)
222
223 bool m_bCallChgLnk : 1;
224 // true -> call ChgLnk
225 // access only via SwChgLinkFlag
226 bool m_bAllProtect : 1;
227 // true -> everything protected / hidden
229 // true -> view was moved
230 bool m_bGCAttr : 1; // true -> non expanded attributes exist.
231 bool m_bIgnoreReadonly : 1; // true -> make the cursor visible on next
232 // EndAction in spite of Readonly
233 bool m_bSelTableCells : 1; // true -> select cells over the InputWin
234 bool m_bAutoUpdateCells : 1; // true -> autoformat cells
235 bool m_bBasicHideCursor : 1; // true -> HideCursor from Basic
236 bool m_bSetCursorInReadOnly : 1;// true -> Cursor is allowed in ReadOnly-Areas
237 bool m_bOverwriteCursor : 1; // true -> show Overwrite Cursor
238
239 // true -> send accessible events when cursor changes
240 // (set to false when using internal-only helper cursor)
242
244
246
247 SAL_DLLPRIVATE void MoveCursorToNum();
248
249 SAL_DLLPRIVATE void ParkPams( SwPaM* pDelRg, SwShellCursor** ppDelRing );
250
260 SAL_DLLPRIVATE void MarkListLevel( const OUString& sListId,
261 const int nLevel );
262
263 // private method(s) accessed from public inline method(s) must be exported.
264 bool LeftRight( bool, sal_uInt16, SwCursorSkipMode, bool );
265 SAL_DLLPRIVATE bool UpDown( bool, sal_uInt16 );
266 SAL_DLLPRIVATE bool LRMargin( bool, bool bAPI = false );
267 SAL_DLLPRIVATE bool IsAtLRMargin( bool, bool bAPI = false ) const;
268
269 SAL_DLLPRIVATE bool isInHiddenTextFrame(SwShellCursor* pShellCursor);
270
271 SAL_DLLPRIVATE bool GoStartWordImpl();
272 SAL_DLLPRIVATE bool GoEndWordImpl();
273 SAL_DLLPRIVATE bool GoNextWordImpl();
274 SAL_DLLPRIVATE bool GoPrevWordImpl();
275 SAL_DLLPRIVATE bool GoNextSentenceImpl();
276 SAL_DLLPRIVATE bool GoEndSentenceImpl();
277 SAL_DLLPRIVATE bool GoStartSentenceImpl();
278
279 typedef bool (SwCursor::*FNCursor)();
280 typedef bool (SwCursorShell::*FNCursorShell)();
281 SAL_DLLPRIVATE bool CallCursorFN( FNCursor );
282 SAL_DLLPRIVATE bool CallCursorShellFN( FNCursorShell );
283
284 SAL_DLLPRIVATE const SwRangeRedline* GotoRedline_( SwRedlineTable::size_type nArrPos, bool bSelect );
285
286 SAL_DLLPRIVATE void sendLOKCursorUpdates();
287protected:
288
289 inline SwMoveFnCollection const & MakeFindRange( SwDocPositions, SwDocPositions, SwPaM* ) const;
290
291 /*
292 * Compare-Method for the StackCursor and the current Cursor.
293 * The Methods return -1, 0, 1 for lower, equal, greater.
294 */
295 int CompareCursorStackMkCurrPt() const;
296
297 bool SelTableRowOrCol( bool bRow, bool bRowSimple = false );
298
299 bool SetInFrontOfLabel( bool bNew );
300
301 void RefreshBlockCursor();
302
305 SAL_DLLPRIVATE void UpdateMarkedListLevel();
306
307protected:
308 virtual void SwClientNotify(const SwModify&, const SfxHint&) override;
309
310public:
311 SwCursorShell( SwDoc& rDoc, vcl::Window *pWin, const SwViewOption *pOpt );
312 // disguised copy constructor
313 SwCursorShell( SwCursorShell& rShell, vcl::Window *pWin );
314 virtual ~SwCursorShell() override;
315
316 // create new cursor and append the old one
317 virtual SwCursor & CreateNewShellCursor() override;
318 virtual SwCursor & GetCurrentShellCursor() override;
319
320 SwPaM * CreateCursor();
322 void DestroyCursor();
324 void TableCursorToCursor();
326 void CursorToBlockCursor();
328 void BlockCursorToCursor();
329
330 // SelAll() selects the document body content
331 // if ExtendedSelect() is called afterwards, the whole nodes array is selected
332 // only for usage in special cases allowed!
333 void ExtendedSelectAll(bool bFootnotes = true);
335 SwNode const* ExtendedSelectedAll() const;
336 enum class StartsWith { None, Table, HiddenPara };
338 StartsWith StartsWith_();
339
340 SwCursor* GetCursor( bool bMakeTableCursor = true ) const;
341 // return only the current cursor
342 SwShellCursor* GetCursor_() { return m_pCurrentCursor; }
343 const SwShellCursor* GetCursor_() const { return m_pCurrentCursor; }
344
345 // show passed cursor - for UNO
346 void SetSelection(const SwPaM& rCursor);
347
348 // remove all cursors from ContentNodes and set to 0
349 void ParkCursor( const SwNode &rIdx );
350
351 // return the current cursor stack
352 // (required in EditShell when deleting contents)
353 inline SwPaM* GetStackCursor() const;
354
355 // start parenthesing, hide SV-Cursor and selected areas
356 void StartAction();
357 // end parenthesing, show SV-Cursor and selected areas
358 void EndAction( const bool bIdleEnd = false );
359
360 // basic cursor travelling
361 tools::Long GetUpDownX() const { return m_nUpDownX; }
362
363 bool Left( sal_uInt16 nCnt, SwCursorSkipMode nMode, bool bAllowVisual = false )
364 { return LeftRight( true, nCnt, nMode, bAllowVisual ); }
365 bool Right( sal_uInt16 nCnt, SwCursorSkipMode nMode, bool bAllowVisual = false )
366 { return LeftRight( false, nCnt, nMode, bAllowVisual ); }
367 bool Up( sal_uInt16 nCnt = 1 ) { return UpDown( true, nCnt ); }
368 bool Down( sal_uInt16 nCnt = 1 ) { return UpDown( false, nCnt ); }
369 bool LeftMargin() { return LRMargin( true ); }
370 bool RightMargin(bool bAPI = false) { return LRMargin( false, bAPI ); }
371 bool SttEndDoc( bool bStt );
372
373 bool MovePage( SwWhichPage, SwPosPage );
374 bool MovePara( SwWhichPara, SwMoveFnCollection const & );
375 bool MoveSection( SwWhichSection, SwMoveFnCollection const & );
376 bool MoveTable( SwWhichTable, SwMoveFnCollection const & );
377 void MoveColumn( SwWhichColumn, SwPosColumn );
378 bool MoveRegion( SwWhichRegion, SwMoveFnCollection const & );
379
380 // note: DO NOT call it FindText because windows.h
381 sal_Int32 Find_Text( const i18nutil::SearchOptions2& rSearchOpt,
382 bool bSearchInNotes,
383 SwDocPositions eStart, SwDocPositions eEnd,
384 bool& bCancel,
385 FindRanges eRng, bool bReplace = false );
386
387 sal_Int32 FindFormat( const SwTextFormatColl& rFormatColl,
388 SwDocPositions eStart, SwDocPositions eEnd,
389 bool& bCancel,
390 FindRanges eRng, const SwTextFormatColl* pReplFormat );
391
392 sal_Int32 FindAttrs( const SfxItemSet& rSet, bool bNoCollections,
393 SwDocPositions eStart, SwDocPositions eEnd,
394 bool& bCancel,
395 FindRanges eRng,
396 const i18nutil::SearchOptions2* pSearchOpt,
397 const SfxItemSet* rReplSet );
398
399 // Position the Cursor
400 // return values:
401 // CRSR_POSCHG: when cursor was corrected from SPoint by the layout
402 // CRSR_POSOLD: when the cursor was not changed
403 int SetCursor( const Point &rPt, bool bOnlyText = false, bool bBlock = true );
404
405 /*
406 * Notification that the visible area was changed. m_aVisArea is reset, then
407 * scrolling is done. The passed Rectangle lays on pixel borders to avoid
408 * pixel errors.
409 */
410 virtual void VisPortChgd( const SwRect & ) override;
411
412 /*
413 * virtual paint method to make selection visible again after Paint
414 */
415 void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle & rRect) override;
416
417 // Areas
418 inline void SetMark();
419 inline bool HasMark() const;
420
421 void ClearMark();
422
430 void NormalizePam(bool bPointFirst = true);
431
432 void SwapPam();
433 bool TestCurrPam( const Point & rPt,
434 bool bTstHit = false); // only exact matches
435 void KillPams();
436
438 void Push();
439 enum class PopMode { DeleteCurrent, DeleteStack };
440 /*
441 * Delete a cursor
442 * - either from the top of the stack
443 * - or delete the current one and replace it with the cursor from the
444 * stack
445 * @return <true> if there was one on the stack, <false> otherwise
446 */
447 bool Pop(PopMode, ::std::optional<SwCallLink>& roLink);
448 bool Pop(PopMode);
449 /*
450 * Combine 2 Cursors.
451 * Delete the topmost from the stack and move its Mark into the current.
452 */
453 void Combine();
454
455 void SttCursorMove();
456 void EndCursorMove( const bool bIdleEnd = false );
457
458 /*
459 * When the focus is lost the selected ranges are not displayed anymore.
460 * On the other hand, on receiving the focus all selected ranges are displayed again
461 * (ranges must be recalculated!).
462 */
463 bool HasShellFocus() const { return m_bHasFocus; }
464 void ShellLoseFocus();
465 void ShellGetFocus();
466
467 // Methods for displaying or hiding the visible text cursor.
468 void ShowCursor();
469 void HideCursor();
470 // Methods for displaying or hiding the selected ranges with visible cursor.
471 void ShowCursors( bool bCursorVis );
472 void HideCursors();
473
474 bool IsOverwriteCursor() const { return m_bOverwriteCursor; }
475 void SetOverwriteCursor( bool bFlag ) { m_bOverwriteCursor = bFlag; }
476
477 bool IsSendAccessibleCursorEvents() const { return m_bSendAccessibleCursorEvents; };
478 void SetSendAccessibleCursorEvents(bool bEnable) { m_bSendAccessibleCursorEvents = bEnable; };
479
480 // Return current frame in which the cursor is placed.
481 SwContentFrame *GetCurrFrame( const bool bCalcFrame = true ) const;
482
483 //true if cursor is hidden because of readonly.
484 //false if it is working despite readonly.
485 bool IsCursorReadonly() const;
486
487 // Cursor is placed in something that is protected or selection contains
488 // something that is protected.
489 bool HasReadonlySel(bool isReplace = false) const;
490 bool HasHiddenSections() const;
491
492 // Can the cursor be set to read only ranges?
493 bool IsReadOnlyAvailable() const { return m_bSetCursorInReadOnly; }
494 void SetReadOnlyAvailable( bool bFlag );
495 bool IsOverReadOnlyPos( const Point& rPt ) const;
496
497 // Methods for aFlyMacroLnk.
498 void SetFlyMacroLnk( const Link<const SwFlyFrameFormat*,void>& rLnk ) { m_aFlyMacroLnk = rLnk; }
499 const Link<const SwFlyFrameFormat*,void>& GetFlyMacroLnk() const { return m_aFlyMacroLnk; }
500
501 // Methods returning/altering link for changes of attributes/formats.
502 void SetChgLnk( const Link<LinkParamNone*,void> &rLnk ) { m_aChgLnk = rLnk; }
503 const Link<LinkParamNone*,void>& GetChgLnk() const { return m_aChgLnk; }
504
505 // Methods returning/altering link for "graphic completely loaded".
506 void SetGrfArrivedLnk( const Link<SwCursorShell&,void> &rLnk ) { m_aGrfArrivedLnk = rLnk; }
507 const Link<SwCursorShell&,void>& GetGrfArrivedLnk() const { return m_aGrfArrivedLnk; }
508
509 //Call ChgLink. When within an action calling will be delayed.
510 void CallChgLnk();
511
512 // Check if the current cursor contains a selection, i.e.
513 // if Mark is set and SPoint and Mark are different.
514 bool HasSelection() const;
515
516 // Check if a selection exists, i.e. if the current cursor comprises a selection.
517 inline bool IsSelection() const;
518 // returns if multiple cursors are available
519 inline bool IsMultiSelection() const;
520
521 // Check if a complete paragraph was selected.
522 bool IsSelFullPara() const;
523
524 // Check if selection is within one paragraph.
525
526 //Should WaitPtr be activated for Clipboard.
527 bool ShouldWait() const;
528
529 // Check if selection is within one paragraph.
530 bool IsSelOnePara() const;
531
532 /*
533 * Returns SRectangle, at which the cursor is located.
534 */
535 const SwRect &GetCharRect() const { return m_aCharRect; }
536 /*
537 * Returns if cursor is wholly or partly within visible range.
538 */
539 bool IsCursorVisible() const { return VisArea().Overlaps( GetCharRect() ); }
540 /*
541 * Returns SwRect, at which the character is located.
542 */
543 void GetCharRectAt(SwRect& rRect, const SwPosition* pPos);
544
545 // Return current page number:
546 // true: in which cursor is located.
547 // false: which is visible at the upper margin.
548 void GetPageNum( sal_uInt16 &rnPhyNum, sal_uInt16 &rnVirtNum,
549 bool bAtCursorPos = true, const bool bCalcFrame = true );
550 // Returns current page's sequential number (1-based),in which cursor is located, ignoring autoinserted empty pages.
551 // Returns 0 on error
552 sal_uInt16 GetPageNumSeqNonEmpty();
553 // Determine how "empty pages" are handled
554 // (used in PhyPage).
555 sal_uInt16 GetNextPrevPageNum( bool bNext = true );
556
557 // Move cursor at the beginning of page "nPage".
558 bool GotoPage( sal_uInt16 nPage );
559
560 sal_uInt16 GetPageCnt();
561
562 bool GoNextCursor();
563
564 bool GoPrevCursor();
565
566 void GoNextPrevCursorSetSearchLabel(const bool bNext);
567
568 // at CurrentCursor.SPoint
569 ::sw::mark::IMark* SetBookmark(
570 const vcl::KeyCode&,
571 const OUString& rName,
573 ::sw::mark::IMark* SetBookmark2(
574 const vcl::KeyCode&,
575 const OUString& rName,
576 bool bHide,
577 const OUString& rCondition);
578 bool GotoMark( const ::sw::mark::IMark* const pMark ); // sets CurrentCursor.SPoint
579 bool GotoMark( const ::sw::mark::IMark* const pMark, bool bAtStart );
580 bool GoNextBookmark(); // true, if there was one
581 bool GoPrevBookmark();
582
583 bool IsFormProtected();
584 ::sw::mark::IFieldmark* GetCurrentFieldmark();
585 sw::mark::IFieldmark* GetFieldmarkAfter(bool bLoop);
586 sw::mark::IFieldmark* GetFieldmarkBefore(bool bLoop);
587 bool GotoFieldmark( const ::sw::mark::IFieldmark* const pMark );
588
589 // update Cursr, i.e. reset it into content should only be called when the
590 // cursor was set to a random position e.g. when deleting frames
591 void UpdateCursorPos();
592
593 // get the selected text at the current cursor. It will be filled with
594 // fields etc.
595 OUString GetSelText() const;
596
598 const SwTableNode* IsCursorInTable() const;
599 bool MoveOutOfTable();
600 bool TrySelectOuterTable();
601 bool MoveStartText();
602
603 bool IsCursorInFootnote() const;
604
605 inline Point& GetCursorDocPos() const;
606 // get cursor position relative to the page it is in
607 Point GetCursorPagePos() const;
608 inline bool IsCursorPtAtEnd() const;
609
610 inline const SwPaM* GetTableCrs() const;
611 inline SwPaM* GetTableCrs();
612
613 bool IsTableComplexForChart();
614 // get current table selection as text
615 OUString GetBoxNms() const;
616
617 // set Cursor to the next/previous cell
618 bool GoNextCell( bool bAppendLine = true );
619 bool GoPrevCell();
620 // go to this box (if available and inside of table)
621 bool GotoTable( const OUString& rName );
622
623 // select a table row, column or box (based on the current cursor)
624 bool SelTableRow() { return SelTableRowOrCol( true ); }
625 bool SelTableCol() { return SelTableRowOrCol( false ); }
626 bool SelTableBox();
627
628 bool SelTable();
629
630 void GotoNextNum();
631 void GotoPrevNum();
632
633 bool GotoOutline( const OUString& rName );
634 // to the next/previous or the given OutlineNode
635 void GotoOutline( SwOutlineNodes::size_type nIdx );
636 // find the "outline position" in the nodes array of the current chapter
637 SwOutlineNodes::size_type GetOutlinePos(sal_uInt8 nLevel = UCHAR_MAX, SwPaM* pPaM = nullptr);
638 // select the given range of OutlineNodes. Optionally including the children
639 // the sal_uInt16s are the positions in OutlineNodes-Array (EditShell)
640 void MakeOutlineSel(SwOutlineNodes::size_type nSttPos, SwOutlineNodes::size_type nEndPos,
641 bool bWithChildren, bool bKillPams = true );
642
643 bool GotoNextOutline();
644 bool GotoPrevOutline();
645
660 SwShellCursor* getShellCursor( bool bBlock );
661 const SwShellCursor* getShellCursor( bool bBlock ) const
662 { return const_cast<SwCursorShell*>(this)->getShellCursor( bBlock ); }
663
664 bool IsBlockMode() const { return nullptr != m_pBlockCursor; }
665
666 // is the Cursor in a table and is the selection over 2 columns
667 bool IsTableMode() const { return nullptr != m_pTableCursor; }
668
669 const SwShellTableCursor* GetTableCursor() const { return m_pTableCursor; }
670 SwShellTableCursor* GetTableCursor() { return m_pTableCursor; }
671 size_t UpdateTableSelBoxes();
672
673 bool GotoFootnoteText();
674 bool GotoFootnoteAnchor();
675 bool GotoPrevFootnoteAnchor();
676 bool GotoNextFootnoteAnchor();
677
678 void GotoFlyAnchor();
679 bool GotoHeaderText();
680 bool GotoFooterText();
681 // jump to the header/footer of the given or current PageDesc
682 bool SetCursorInHdFt(size_t nDescNo, bool bInHeader, bool bEven = false, bool bFirst = false);
683 // is point of cursor in header/footer. pbInHeader return true if it is
684 // in a headerframe otherwise in a footerframe
685 bool IsInHeaderFooter( bool* pbInHeader = nullptr ) const;
686
687 bool GotoNextTOXBase( const OUString* = nullptr );
688 bool GotoPrevTOXBase( const OUString* = nullptr );
689 void GotoTOXMarkBase();
690 // jump to the next or previous index entry
691 bool GotoNxtPrvTOXMark( bool bNext = true );
692 // jump to the next/previous index mark of this type
693 const SwTOXMark& GotoTOXMark( const SwTOXMark& rStart, SwTOXSearch eDir );
694
695 // jump to the next or previous table formula
696 // optionally only to broken formulas
697 bool GotoNxtPrvTableFormula( bool bNext = true,
698 bool bOnlyErrors = false );
699 // jump to the next / previous hyperlink - inside text and also
700 // on graphics
701 bool SelectNxtPrvHyperlink( bool bNext );
702
703 bool GotoRefMark( const OUString& rRefMark, sal_uInt16 nSubType,
704 sal_uInt16 nSeqNo );
705
706 // get the nth character from the start or end of the current selection
707 sal_Unicode GetChar( bool bEnd = true, tools::Long nOffset = 0 );
708 bool ExtendSelection( bool bEnd = true, sal_Int32 nCount = 1 );
709
710 // Place only the visible cursor at the given position in the document.
711 // Return false if SPoint was corrected by layout.
712 // (This is needed for displaying the Drag&Drop/Copy-Cursor.)
713 bool SetVisibleCursor( const Point &rPt );
714 inline void UnSetVisibleCursor();
715 SwVisibleCursor* GetVisibleCursor() const;
716
717 // jump to the next or previous field of the corresponding type
718 bool MoveFieldType(
719 const SwFieldType* pFieldType,
720 const bool bNext,
721 const SwFieldIds nResType = SwFieldIds::Unknown,
722 const bool bAddSetExpressionFieldsToInputFields = true );
723
724 bool GotoFormatField( const SwFormatField& rField );
725
726 bool GotoFormatContentControl(const SwFormatContentControl& rContentControl);
727
728 void GotoFormControl(bool bNext);
729
730 static SwTextField* GetTextFieldAtPos(
731 const SwPosition* pPos,
733 static SwTextField* GetTextFieldAtCursor(
734 const SwPaM* pCursor,
736 static SwField* GetFieldAtCursor(
737 const SwPaM* pCursor,
738 const bool bIncludeInputFieldAtStart );
739 SwField* GetCurField( const bool bIncludeInputFieldAtStart = false ) const;
740 bool CursorInsideInputField() const;
741 SwTextContentControl* CursorInsideContentControl() const;
742 static bool PosInsideInputField( const SwPosition& rPos );
743 bool DocPtInsideInputField( const Point& rDocPt ) const;
744 static sal_Int32 StartOfInputFieldAtPos( const SwPosition& rPos );
745 static sal_Int32 EndOfInputFieldAtPos( const SwPosition& rPos );
746
747 // Return number of cursors in ring (The flag indicates whether
748 // only cursors containing selections are requested).
749 sal_uInt16 GetCursorCnt( bool bAll = true ) const;
750
751 // Char Travelling - methods (in crstrvl1.cxx)
752 bool GoStartWord();
753 bool GoEndWord();
754 bool GoNextWord();
755 bool GoPrevWord();
756 bool GoNextSentence();
757 bool GoStartSentence();
758 bool GoEndSentence();
759 bool SelectWord( const Point* pPt );
760 void ExpandToSentenceBorders();
761
762 // get position from current cursor
763 bool IsStartWord( sal_Int16 nWordType = css::i18n::WordType::ANYWORD_IGNOREWHITESPACES )const;
764 bool IsEndWord( sal_Int16 nWordType = css::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
765 bool IsInWord( sal_Int16 nWordType = css::i18n::WordType::ANYWORD_IGNOREWHITESPACES ) const;
766 bool IsStartSentence() const;
767 bool IsEndSentence() const;
768 bool IsSttPara() const;
769 bool IsEndPara() const;
770 bool IsEndOfTable() const;
771 bool IsStartOfDoc() const;
772 bool IsEndOfDoc() const;
773 bool IsInFrontOfLabel() const;
774 bool IsAtLeftMargin() const { return IsAtLRMargin( true ); }
775 bool IsAtRightMargin() const { return IsAtLRMargin( false, true/*bAPI*/ ); }
776
777 // delete all created cursors, set the table cursor and the last cursor to
778 // its TextNode (or StartNode?)
779 // They all get created on the next ::GetCursor again
780 // Used for Drag&Drop/Clipboard-Paste in tables
781 bool ParkTableCursor();
782
783 // Non expanded attributes?
784 bool IsGCAttr() const { return m_bGCAttr; }
785 void ClearGCAttr() { m_bGCAttr = false; }
786 void UpdateAttr() { m_bGCAttr = true; }
787
788 // is the whole document protected/hidden (for UI...)
789 bool IsAllProtect() const { return m_bAllProtect; }
790
791 bool GotoRegion( std::u16string_view rName );
792
793 // show the current selection
794 virtual void MakeSelVisible();
795
796 // set the cursor to a NOT protected/hidden node
797 bool FindValidContentNode( bool bOnlyText );
798
799 bool GetContentAtPos( const Point& rPt,
800 SwContentAtPos& rContentAtPos,
801 bool bSetCursor = false,
802 SwRect* pFieldRect = nullptr );
803
804 const SwPostItField* GetPostItFieldAtCursor() const;
805
806 // get smart tags rectangle for the given point
807 void GetSmartTagRect( const Point& rPt, SwRect& rSelectRect );
808
809 // get smart tags at current cursor position
810 void GetSmartTagTerm( std::vector< OUString >& rSmartTagTypes,
811 css::uno::Sequence< css::uno::Reference< css::container::XStringKeyMap > >& rStringKeyMaps,
812 css::uno::Reference<css::text::XTextRange>& rRange ) const;
813
814 bool IsPageAtPos( const Point &rPt ) const;
815
816 bool SelectTextAttr( sal_uInt16 nWhich, bool bExpand, const SwTextAttr* pAttr = nullptr );
817 bool GotoINetAttr( const SwTextINetFormat& rAttr );
818 const SwFormatINetFormat* FindINetAttr( std::u16string_view rName ) const;
819
820 bool SelectTextModel(sal_Int32 nStart, sal_Int32 nEnd);
821#ifdef SW_DLLIMPLEMENTATION
822 bool SelectTextView(TextFrameIndex nStart, TextFrameIndex nEnd);
823 // result is only valid while cursor isn't moved!
824 TextFrameIndex GetCursorPointAsViewIndex() const;
825#endif
826
827 bool CheckTableBoxContent( const SwPosition* pPos = nullptr );
828 void SaveTableBoxContent( const SwPosition* pPos = nullptr );
829 void ClearTableBoxContent();
830 bool EndAllTableBoxEdit();
831
832 void SetSelTableCells( bool bFlag ) { m_bSelTableCells = bFlag; }
833 bool IsSelTableCells() const { return m_bSelTableCells; }
834
835 void UnsetEnhancedTableSelection() { m_eEnhancedTableSel = SwTable::SEARCH_NONE; }
836 SwTable::SearchType GetEnhancedTableSelection() const { return m_eEnhancedTableSel; }
837
838 bool IsAutoUpdateCells() const { return m_bAutoUpdateCells; }
839 void SetAutoUpdateCells( bool bFlag ) { m_bAutoUpdateCells = bFlag; }
840
841 bool GetShadowCursorPos( const Point& rPt, SwFillMode eFillMode,
842 SwRect& rRect, sal_Int16& rOrient );
843 bool SetShadowCursorPos( const Point& rPt, SwFillMode eFillMode );
844
845 const SwRangeRedline* SelNextRedline();
846 const SwRangeRedline* SelPrevRedline();
847 const SwRangeRedline* GotoRedline( SwRedlineTable::size_type nArrPos, bool bSelect );
848
849 bool GotoFootnoteAnchor(const SwTextFootnote& rTextFootnote);
850
851 SAL_DLLPRIVATE SvxFrameDirection GetTextDirection( const Point* pPt = nullptr ) const;
852 // is cursor or the point in/over a vertical formatted text?
853 bool IsInVerticalText( const Point* pPt = nullptr ) const;
854 // is cursor or the point in/over a right to left formatted text?
855 bool IsInRightToLeftText() const;
856
857 static void FirePageChangeEvent(sal_uInt16 nOldPage, sal_uInt16 nNewPage);
858 bool bColumnChange();
859 static void FireSectionChangeEvent(sal_uInt16 nOldSection, sal_uInt16 nNewSection);
860 static void FireColumnChangeEvent(sal_uInt16 nOldColumn, sal_uInt16 nNewColumn);
861 // If the current cursor position is inside a hidden range true is returned. If bSelect is
862 // true, the hidden range is selected. If bSelect is false, the hidden range is not selected.
863 bool IsInHiddenRange(const bool bSelect);
864
865 // remove all invalid cursors
866 void ClearUpCursors();
867
868 void SetMacroExecAllowed( const bool _bMacroExecAllowed )
869 {
870 m_bMacroExecAllowed = _bMacroExecAllowed;
871 }
873 {
874 return m_bMacroExecAllowed;
875 }
876
886 OUString GetCursorDescr() const;
887
888 virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
890 OUString getPageRectangles();
891
893 void NotifyCursor(SfxViewShell* pViewShell) const;
894};
895
896// Cursor Inlines:
898 SwDocPositions nStt, SwDocPositions nEnd, SwPaM* pPam ) const
899{
900 return m_pCurrentCursor->MakeFindRange( nStt, nEnd, pPam );
901}
902
904
906
907inline bool SwCursorShell::HasMark() const { return m_pCurrentCursor->HasMark(); }
908
909inline bool SwCursorShell::IsSelection() const
910{
911 return IsTableMode() || m_pCurrentCursor->HasMark() ||
913}
915{
917}
918
920{
922}
923
925{
926 return m_pCurrentCursor->GetPtPos();
927}
928
930{
931 return m_pTableCursor;
932}
933
935{
936 return m_pTableCursor;
937}
938
940{
943}
944
945#endif // _CRSRSH_HXX
946
947/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Access to the block cursor.
Definition: BlockCursor.hxx:40
SwContentFrame is the layout for content nodes: a common base class for text (paragraph) and non-text...
Definition: cntfrm.hxx:59
tools::Long m_nLeftFramePos
Definition: crsrsh.hxx:199
bool Pop(PopMode, ::std::optional< SwCallLink > &roLink)
tools::Long GetUpDownX() const
Definition: crsrsh.hxx:361
bool IsAtLeftMargin() const
Definition: crsrsh.hxx:774
void SetAutoUpdateCells(bool bFlag)
Definition: crsrsh.hxx:839
const SwPaM * GetTableCrs() const
Definition: crsrsh.hxx:929
bool m_bSetCursorInReadOnly
Definition: crsrsh.hxx:236
bool LeftMargin()
Definition: crsrsh.hxx:369
bool m_bMacroExecAllowed
Definition: crsrsh.hxx:243
void SetOverwriteCursor(bool bFlag)
Definition: crsrsh.hxx:475
bool IsReadOnlyAvailable() const
Definition: crsrsh.hxx:493
void SetMacroExecAllowed(const bool _bMacroExecAllowed)
Definition: crsrsh.hxx:868
bool m_bInCMvVisportChgd
Flag for CursorMoves.
Definition: crsrsh.hxx:228
bool m_bSendAccessibleCursorEvents
Definition: crsrsh.hxx:241
SwShellCursor * GetCursor_()
Definition: crsrsh.hxx:342
bool m_bIgnoreReadonly
Definition: crsrsh.hxx:231
void ClearGCAttr()
Definition: crsrsh.hxx:785
const SwRect & GetCharRect() const
Definition: crsrsh.hxx:535
const Link< LinkParamNone *, void > & GetChgLnk() const
Definition: crsrsh.hxx:503
bool IsMacroExecAllowed() const
Definition: crsrsh.hxx:872
Point & GetCursorDocPos() const
Definition: crsrsh.hxx:924
Point m_aOldRBPos
Right/Bottom of last VisArea.
Definition: crsrsh.hxx:176
SwTable::SearchType m_eEnhancedTableSel
Definition: crsrsh.hxx:212
SwPaM * GetStackCursor() const
Definition: crsrsh.hxx:903
tools::Long m_nUpDownX
try to move the cursor on up/down always in the same column
Definition: crsrsh.hxx:197
SwNodeIndex * m_pBoxIdx
for recognizing of the changed
Definition: crsrsh.hxx:194
bool m_bChgCallFlag
attribute change inside Start- and EndAction
Definition: crsrsh.hxx:219
const SwShellCursor * GetCursor_() const
Definition: crsrsh.hxx:343
void SetFlyMacroLnk(const Link< const SwFlyFrameFormat *, void > &rLnk)
Definition: crsrsh.hxx:498
bool IsMultiSelection() const
Definition: crsrsh.hxx:914
CursorMoveState m_eMvState
Status for Cursor-Travelling - GetModelPositionForViewPoint.
Definition: crsrsh.hxx:211
bool IsCursorVisible() const
Definition: crsrsh.hxx:539
Point m_aCursorHeight
height & offset from visible Cursor
Definition: crsrsh.hxx:175
SwBlockCursor * m_pBlockCursor
interface of cursor for block (=rectangular) selection
Definition: crsrsh.hxx:189
bool m_bAllProtect
Flag for areas.
Definition: crsrsh.hxx:226
bool RightMargin(bool bAPI=false)
Definition: crsrsh.hxx:370
bool IsSelTableCells() const
Definition: crsrsh.hxx:833
bool m_bSelTableCells
Definition: crsrsh.hxx:233
SwShellTableCursor * GetTableCursor()
Definition: crsrsh.hxx:670
void SetSelTableCells(bool bFlag)
Definition: crsrsh.hxx:832
bool m_bGCAttr
Definition: crsrsh.hxx:230
bool m_bCallChgLnk
flag for derived classes
Definition: crsrsh.hxx:223
bool IsSelection() const
Definition: crsrsh.hxx:909
SwTableBox * m_pBoxPtr
table row
Definition: crsrsh.hxx:195
int m_nMarkedListLevel
Definition: crsrsh.hxx:215
void UpdateAttr()
Definition: crsrsh.hxx:786
SwMoveFnCollection const & MakeFindRange(SwDocPositions, SwDocPositions, SwPaM *) const
Definition: crsrsh.hxx:897
bool HasMark() const
Definition: crsrsh.hxx:907
Link< const SwFlyFrameFormat *, void > m_aFlyMacroLnk
Link will be called, if the Cursor is set into a fly.
Definition: crsrsh.hxx:179
const SwShellTableCursor * GetTableCursor() const
Definition: crsrsh.hxx:669
sal_uInt16 m_nCursorMove
Definition: crsrsh.hxx:210
void UnsetEnhancedTableSelection()
Definition: crsrsh.hxx:835
bool m_bBasicHideCursor
Definition: crsrsh.hxx:235
bool Right(sal_uInt16 nCnt, SwCursorSkipMode nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:365
SwVisibleCursor * m_pVisibleCursor
the visible cursor
Definition: crsrsh.hxx:187
SwShellCursor * m_pStackCursor
stack for the cursor
Definition: crsrsh.hxx:186
bool IsAtRightMargin() const
Definition: crsrsh.hxx:775
const Link< const SwFlyFrameFormat *, void > & GetFlyMacroLnk() const
Definition: crsrsh.hxx:499
const Link< SwCursorShell &, void > & GetGrfArrivedLnk() const
Definition: crsrsh.hxx:507
void SetMark()
Definition: crsrsh.hxx:905
bool IsAutoUpdateCells() const
Definition: crsrsh.hxx:838
bool IsSendAccessibleCursorEvents() const
Definition: crsrsh.hxx:477
bool Down(sal_uInt16 nCnt=1)
Definition: crsrsh.hxx:368
const SwShellCursor * getShellCursor(bool bBlock) const
Definition: crsrsh.hxx:661
Link< SwCursorShell &, void > m_aGrfArrivedLnk
Link calls to UI if a graphic is arrived.
Definition: crsrsh.hxx:183
SwNodeType m_nCurrentNdTyp
Definition: crsrsh.hxx:202
bool IsOverwriteCursor() const
Definition: crsrsh.hxx:474
bool SelTableCol()
Definition: crsrsh.hxx:625
bool m_bSVCursorVis
SV-Cursor visible/invisible.
Definition: crsrsh.hxx:218
bool IsGCAttr() const
Definition: crsrsh.hxx:784
OUString m_sMarkedListId
table rows or columns selected by not cell by cell
Definition: crsrsh.hxx:214
SwRect m_aCharRect
Char-SRectangle on which the cursor is located.
Definition: crsrsh.hxx:174
SwTable::SearchType GetEnhancedTableSelection() const
Definition: crsrsh.hxx:836
SwShellTableCursor * m_pTableCursor
table Cursor; only in tables when the selection lays over 2 columns
Definition: crsrsh.hxx:191
void SetChgLnk(const Link< LinkParamNone *, void > &rLnk)
Definition: crsrsh.hxx:502
CursorFlag
for calling UpdateCursor
Definition: crsrsh.hxx:161
@ CHKRANGE
check overlapping PaMs
Definition: crsrsh.hxx:164
@ SCROLLWIN
scroll window
Definition: crsrsh.hxx:163
bool Left(sal_uInt16 nCnt, SwCursorSkipMode nMode, bool bAllowVisual=false)
Definition: crsrsh.hxx:363
bool HasShellFocus() const
Definition: crsrsh.hxx:463
void SetGrfArrivedLnk(const Link< SwCursorShell &, void > &rLnk)
Definition: crsrsh.hxx:506
bool SelTableRow()
Definition: crsrsh.hxx:624
SwNodeOffset m_nCurrentNode
Definition: crsrsh.hxx:200
Link< LinkParamNone *, void > m_aChgLnk
link will be called by every attribute/ format changes at cursor position.
Definition: crsrsh.hxx:181
SwFrame * m_oldColFrame
Definition: crsrsh.hxx:245
bool m_bHasFocus
Shell is "active" in a window.
Definition: crsrsh.hxx:217
SwShellCursor * m_pCurrentCursor
current cursor
Definition: crsrsh.hxx:185
bool m_bOverwriteCursor
Definition: crsrsh.hxx:237
bool m_bAutoUpdateCells
Definition: crsrsh.hxx:234
bool IsCursorPtAtEnd() const
Definition: crsrsh.hxx:919
bool IsTableMode() const
Definition: crsrsh.hxx:667
bool Up(sal_uInt16 nCnt=1)
Definition: crsrsh.hxx:367
bool IsBlockMode() const
Definition: crsrsh.hxx:664
sal_Int32 m_nCurrentContent
Definition: crsrsh.hxx:201
void SetSendAccessibleCursorEvents(bool bEnable)
Definition: crsrsh.hxx:478
bool IsAllProtect() const
Definition: crsrsh.hxx:789
void UnSetVisibleCursor()
Definition: crsrsh.hxx:939
bool m_bVisPortChgd
in VisPortChg-Call
Definition: crsrsh.hxx:220
SwMoveFnCollection const & MakeFindRange(SwDocPositions, SwDocPositions, SwPaM *) const
set range for search in document
Definition: swcrsr.cxx:744
Definition: doc.hxx:197
Instances of SwFields and those derived from it occur 0 to n times.
Definition: fldbas.hxx:247
Base class of all fields.
Definition: fldbas.hxx:296
SfxPoolItem subclass that wraps an SwContentControl.
Base class of the Writer layout elements.
Definition: frame.hxx:315
Marks a node in the document model.
Definition: ndindex.hxx:31
Base class of the Writer document model elements.
Definition: node.hxx:98
PaM is Point and Mark: a selection of the document model.
Definition: pam.hxx:188
const SwPosition * End() const
Definition: pam.hxx:263
const SwPosition * GetPoint() const
Definition: pam.hxx:253
bool HasMark() const
A PaM marks a selection if Point and Mark are distinct positions.
Definition: pam.hxx:251
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
bool Overlaps(const SwRect &rRect) const
Definition: swrect.hxx:374
vector_type::size_type size_type
Definition: docary.hxx:223
The root element of a Writer document layout.
Definition: rootfrm.hxx:85
SwSelPaintRects is a base class of SwShellCursor, which stores the overlay for the cursor/selection: ...
Definition: viscrs.hxx:80
Represents the current text cursor of one opened edit window.
Definition: viscrs.hxx:140
SwShellCursor * GetNext()
Definition: viscrs.hxx:188
const Point & GetPtPos() const
Definition: viscrs.hxx:165
virtual void SetMark() override
Unless this is called, the getter method of Mark will return Point.
Definition: viscrs.cxx:939
SwTableBox is one table cell in the document model.
Definition: swtable.hxx:443
@ SEARCH_NONE
Definition: swtable.hxx:146
A wrapper around SfxPoolItem to store the start position of (usually) a text portion,...
Definition: txatbase.hxx:44
SwTextAttr subclass that tracks the location of the wrapped SwFormatContentControl.
SwTextAttr subclass for footnotes and endnotes.
Definition: txtftn.hxx:34
Represents the style of a paragraph.
Definition: fmtcol.hxx:61
SwTextAttr subclass that tracks the location of the wrapped SwFormatURL.
Definition: txtinet.hxx:30
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const
Definition: viewsh.cxx:143
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
Definition: viewsh.cxx:1837
void StartAction()
Definition: viewsh.hxx:620
void EndAction(const bool bIdleEnd=false)
Definition: viewsh.hxx:626
const SwRect & VisArea() const
Definition: viewsh.cxx:628
virtual void VisPortChgd(const SwRect &)
Definition: viewsh.cxx:1151
void SetDragCursor(bool bFlag=true)
Definition: viscrs.hxx:62
The Undo actions need to create new Shell cursors.
virtual SwCursor & GetCurrentShellCursor()=0
virtual SwCursor & CreateNewShellCursor()=0
static SwCursorShell::StartsWith StartsWith(SwStartNode const &rStart)
Definition: crsrsh.cxx:769
const int CRSR_POSCHG
Definition: crsrsh.hxx:130
IsAttrAtPos
Definition: crsrsh.hxx:75
@ CurrAttrs
only for debugging
@ TableBoxValue
only for debugging
const int CRSR_POSOLD
Definition: crsrsh.hxx:129
SwFillMode
Definition: crstate.hxx:29
CursorMoveState
Definition: crstate.hxx:122
bool(* SwWhichTable)(SwPaM &, SwMoveFnCollection const &, bool bInReadOnly)
Definition: cshtyp.hxx:58
SwContentFrame *(* SwPosColumn)(const SwLayoutFrame *)
Definition: cshtyp.hxx:67
bool(* SwWhichPara)(SwPaM &, SwMoveFnCollection const &)
Definition: cshtyp.hxx:43
SwDocPositions
Definition: cshtyp.hxx:104
SwLayoutFrame *(* SwWhichColumn)(const SwLayoutFrame *)
Definition: cshtyp.hxx:66
FindRanges
Definition: cshtyp.hxx:91
bool(* SwWhichRegion)(SwPaM &, SwMoveFnCollection const &, bool bInReadOnly)
Definition: cshtyp.hxx:75
SwLayoutFrame *(* SwWhichPage)(const SwLayoutFrame *)
Definition: cshtyp.hxx:34
SwContentFrame *(* SwPosPage)(const SwLayoutFrame *)
Definition: cshtyp.hxx:38
bool(* SwWhichSection)(SwPaM &, SwMoveFnCollection const &)
Definition: cshtyp.hxx:51
struct _xmlTextWriter * xmlTextWriterPtr
SwFieldIds
Definition: fldbas.hxx:49
SvxFrameDirection
NONE
None
Dialog to specify the properties of date form field.
std::optional< OUString > ReplaceBackReferences(const i18nutil::SearchOptions2 &rSearchOpt, SwPaM *const pPam, SwRootFrame const *const pLayout)
Helperfunction to resolve backward references in regular expressions.
Definition: findtxt.cxx:1108
bool GetRanges(std::vector< std::shared_ptr< SwUnoCursor > > &rRanges, SwDoc &rDoc, SwPaM const &rDelPam)
Definition: autofmt.cxx:1111
bool ReplaceImpl(SwPaM &rCursor, OUString const &rReplacement, bool const bRegExp, SwDoc &rDoc, SwRootFrame const *const pLayout)
Definition: findtxt.cxx:1040
GetTextAttrMode
Definition: swtypes.hxx:163
long Long
SwNodeType
Definition: ndtyp.hxx:28
union SwContentAtPos::@21 aFnd
const SwRangeRedline * pRedl
Definition: crsrsh.hxx:107
SwContentNode * pNode
Definition: crsrsh.hxx:108
bool IsInProtectSect() const
is the node in a protected section?
Definition: crstrvl.cxx:2118
const SfxPoolItem * pAttr
Definition: crsrsh.hxx:106
bool IsInRTLText() const
Definition: crstrvl.cxx:2152
SwContentAtPos(IsAttrAtPos eGetAtPos)
Definition: crsrsh.hxx:116
OUString sStr
Definition: crsrsh.hxx:113
const SwField * pField
Definition: crsrsh.hxx:105
const SwTextAttr * pFndTextAttr
Definition: crsrsh.hxx:114
IsAttrAtPos eContentAtPos
Definition: crsrsh.hxx:111
const sw::mark::IFieldmark * pFieldmark
Definition: crsrsh.hxx:109
Marks a position in the document model.
Definition: pam.hxx:38
SwCursorSkipMode
Definition: swcrsr.hxx:65
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
bool GetAutoSumSel(const SwCursorShell &rShell, SwCellFrames &rBoxes)
Definition: tblsel.cxx:691
std::deque< SwCellFrame * > SwCellFrames
Definition: tblsel.hxx:41
SwTOXSearch
Definition: toxe.hxx:23
unsigned char sal_uInt8
sal_uInt16 sal_Unicode
constexpr OUStringLiteral UPDOWN(u"UpDown")