1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
21 #include <sal/config.h>
25 #include <svtools/scrolladaptor.hxx>
26 #include <vcl/help.hxx>
28 #include "hiranges.hxx"
29 #include "viewutil.hxx"
31 #include "gridwin.hxx"
32 #include "drawview.hxx"
35 struct MisspellRanges
;
38 class ScEditEngineDefaulter
;
39 class ScOutlineWindow
;
44 struct ScRangeFindData
;
51 class ScPageBreakData
;
54 namespace com::sun::star::chart2::data
{ struct HighlightedRange
; }
55 namespace tools
{ class JsonWriter
; }
66 class ScCornerButton
: public vcl::Window
69 ScViewData
* pViewData
;
72 virtual void Paint( vcl::RenderContext
& rRenderContext
, const tools::Rectangle
& rRect
) override
;
73 virtual void Resize() override
;
74 virtual void MouseButtonDown( const MouseEvent
& rMEvt
) override
;
76 ScCornerButton( vcl::Window
* pParent
, ScViewData
* pData
);
77 virtual ~ScCornerButton() override
;
79 virtual void StateChanged( StateChangedType nType
) override
;
80 virtual void DataChanged( const DataChangedEvent
& rDCEvt
) override
;
83 class ScExtraEditViewManager
86 enum ModifierTagType
{ Adder
, Remover
};
89 ScExtraEditViewManager(ScTabViewShell
* pThisViewShell
, std::array
<VclPtr
<ScGridWindow
>, 4> const & pGridWin
)
90 : mpThisViewShell(pThisViewShell
)
92 , mpOtherEditView(nullptr)
96 ~ScExtraEditViewManager();
98 void Add(SfxViewShell
* pViewShell
, ScSplitPos eWhich
);
100 void Remove(SfxViewShell
* pViewShell
, ScSplitPos eWhich
);
103 template<ModifierTagType ModifierTag
>
104 void Apply(SfxViewShell
* pViewShell
, ScSplitPos eWhich
);
106 template<ModifierTagType ModifierTag
>
107 void Modifier(ScGridWindow
* pWin
);
110 ScTabViewShell
* mpThisViewShell
;
111 std::array
<VclPtr
<ScGridWindow
>, 4> const & mpGridWin
;
112 EditView
* mpOtherEditView
;
119 enum BlockMode
{ None
= 0, Normal
= 1, Own
= 2 };
121 VclPtr
<vcl::Window
> pFrameWin
; // First !!!
122 ScViewData aViewData
; // must be at the front !
123 ScViewRenderingOptions aViewRenderingData
;
125 std::unique_ptr
<ScViewSelectionEngine
> pSelEngine
;
126 ScViewFunctionSet aFunctionSet
;
128 std::unique_ptr
<ScHeaderSelectionEngine
> pHdrSelEng
;
129 ScHeaderFunctionSet aHdrFunc
;
131 std::unique_ptr
<ScDrawView
> pDrawView
;
133 Size aFrameSize
; // passed on as for DoResize
136 // The ownership of these two is rather weird. we seem to need
137 // to keep an old copy alive for some period of time to avoid crashing.
141 std::shared_ptr
<weld::MessageDialog
> m_xMessageBox
;
143 std::array
<VclPtr
<ScGridWindow
>, 4> pGridWin
;
144 std::array
<VclPtr
<ScColBar
>, 2> pColBar
;
145 std::array
<VclPtr
<ScRowBar
>, 2> pRowBar
;
146 std::array
<VclPtr
<ScOutlineWindow
>, 2> pColOutline
;
147 std::array
<VclPtr
<ScOutlineWindow
>, 2> pRowOutline
;
148 VclPtr
<ScTabSplitter
> pHSplitter
;
149 VclPtr
<ScTabSplitter
> pVSplitter
;
150 VclPtr
<ScTabControl
> pTabControl
;
151 VclPtr
<ScrollAdaptor
> aVScrollTop
;
152 VclPtr
<ScrollAdaptor
> aVScrollBottom
; // initially visible
153 VclPtr
<ScrollAdaptor
> aHScrollLeft
; // initially visible
154 VclPtr
<ScrollAdaptor
> aHScrollRight
;
155 VclPtr
<ScCornerButton
> aCornerButton
;
156 VclPtr
<ScCornerButton
> aTopButton
;
158 std::shared_ptr
<sc::SpellCheckContext
> mpSpellCheckCxt
;
160 std::unique_ptr
<sdr::overlay::OverlayObjectList
> mxInputHintOO
; // help hint for data validation
162 std::unique_ptr
<ScPageBreakData
> pPageBreakData
;
163 std::vector
<ScHighlightEntry
> maHighlightRanges
;
165 ScDocumentUniquePtr pBrushDocument
; // cell formats for format paint brush
166 std::unique_ptr
<SfxItemSet
> pDrawBrushSet
; // drawing object attributes for paint brush
169 VclPtr
<ScGridWindow
> pTimerWindow
;
170 MouseEvent aTimerMEvt
;
172 ScExtraEditViewManager aExtraEditViewManager
;
175 tools::Rectangle aTipRectangle
;
176 QuickHelpFlags nTipAlign
;
178 VclPtr
<vcl::Window
> sTopParent
;
180 tools::Long nPrevDragPos
;
182 BlockMode meBlockMode
; // Marks block
183 BlockMode meHighlightBlockMode
; // Highlight row/col
186 SCCOL nBlockStartXOrig
;
190 SCROW nBlockStartYOrig
;
199 double mfPendingTabBarWidth
; // Tab bar width relative to frame window width.
201 SCROW mnLOKStartHeaderRow
;
202 SCROW mnLOKEndHeaderRow
;
203 SCCOL mnLOKStartHeaderCol
;
204 SCCOL mnLOKEndHeaderCol
;
207 bool bInUpdateHeader
:1;
208 bool bInActivatePart
:1;
209 bool bInZoomUpdate
:1;
211 bool bDrawSelMode
:1; // Only select draw objects ?
212 bool bLockPaintBrush
:1; // keep for more than one use?
213 bool bDragging
:1; // for scroll bars
214 bool bBlockNeg
:1; // is no longer highlighted?
215 bool bBlockCols
:1; // are whole columns selected?
216 bool bBlockRows
:1; // are whole rows selected?
217 bool mbInlineWithScrollbar
:1; // should inline with scrollbar?
219 double mfLastZoomScale
= 0;
220 double mfAccumulatedZoom
= 0;
221 tools::Long mnPendingaHScrollLeftDelta
= 0;
222 tools::Long mnPendingaHScrollRightDelta
= 0;
226 void DoAddWin( ScGridWindow
* pWin
);
228 void InitScrollBar(ScrollAdaptor
& rScrollBar
, tools::Long nMaxVal
, const Link
<weld::Scrollbar
&, void>& rLink
);
229 DECL_LINK(HScrollLeftHdl
, weld::Scrollbar
&, void );
230 DECL_LINK(HScrollRightHdl
, weld::Scrollbar
&, void );
231 DECL_LINK(VScrollTopHdl
, weld::Scrollbar
&, void );
232 DECL_LINK(VScrollBottomHdl
, weld::Scrollbar
&, void );
233 DECL_LINK(EndScrollHdl
, const MouseEvent
&, bool);
234 void ScrollHdl(ScrollAdaptor
* rScrollBar
);
236 DECL_LINK(SplitHdl
, Splitter
*, void);
237 void DoHSplit(tools::Long nSplitPos
);
238 void DoVSplit(tools::Long nSplitPos
);
240 DECL_LINK( TimerHdl
, Timer
*, void );
242 void UpdateVarZoom();
244 static void SetScrollBar( ScrollAdaptor
& rScroll
, tools::Long nRangeMax
, tools::Long nVisible
, tools::Long nPos
, bool bLayoutRTL
);
245 static tools::Long
GetScrollBarPos( const ScrollAdaptor
& rScroll
, bool bLayoutRTL
);
247 void GetAreaMoveEndPosition(SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
,
248 SCCOL
& rAreaX
, SCROW
& rAreaY
, ScFollowMode
& rMode
,
249 bool bInteractiveByUser
= false);
251 void SkipCursorHorizontal(SCCOL
& rCurX
, SCROW
& rCurY
, SCCOL nOldX
, SCCOL nMovX
);
252 void SkipCursorVertical(SCCOL
& rCurX
, SCROW
& rCurY
, SCROW nOldY
, SCROW nMovY
);
256 * @brief Update marks for a selected Range. This is a helper function
257 * for PaintRangeFinder.
259 * @param pData: Range to update for painting.
260 * @param nTab: Current tab.
264 void PaintRangeFinderEntry (const ScRangeFindData
* pData
, SCTAB nTab
);
266 void SetZoomPercentFromCommand(sal_uInt16 nZoomPercent
);
268 DECL_STATIC_LINK(ScTabView
, InstallLOKNotifierHdl
, void*, vcl::ILibreOfficeKitNotifier
*);
270 void UpdateHighlightOverlay();
271 void ImplTabChanged(bool bSameTabButMoved
);
274 void UpdateHeaderWidth( const ScVSplitPos
* pWhich
= nullptr,
275 const SCROW
* pPosY
= nullptr );
282 bool UpdateVisibleRange();
283 void GetBorderSize( SvBorder
& rBorder
, const Size
& rSize
);
285 void ResetDrawDragMode();
286 bool IsDrawTextEdit() const;
287 void DrawEnableAnim(bool bSet
);
289 void MakeDrawView( TriState nForceDesignMode
);
291 void HideNoteMarker();
293 void UpdateIMap( SdrObject
* pObj
);
296 /** make noncopyable */
297 ScTabView(const ScTabView
&) = delete;
298 const ScTabView
& operator=(const ScTabView
&) = delete;
300 ScTabView( vcl::Window
* pParent
, ScDocShell
& rDocSh
, ScTabViewShell
* pViewShell
);
303 enum SplitMethod
{ SC_SPLIT_METHOD_COL
, SC_SPLIT_METHOD_ROW
, SC_SPLIT_METHOD_CURSOR
};
305 void MakeDrawLayer();
309 bool HasHintWindow() const;
310 void RemoveHintWindow();
311 void TestHintWindow();
313 DECL_LINK( TabBarResize
, ::TabBar
*, void );
314 /** Sets an absolute tab bar width (in pixels). */
315 void SetTabBarWidth( tools::Long nNewWidth
);
316 /** Sets a relative tab bar width.
317 @param fRelTabBarWidth Tab bar width relative to frame window width (0.0 ... 1.0). */
318 SC_DLLPUBLIC
void SetRelTabBarWidth( double fRelTabBarWidth
);
319 /** Sets a relative tab bar width. Tab bar is resized again in next DoResize().
320 @param fRelTabBarWidth Tab bar width relative to frame window width (0.0 ... 1.0). */
321 void SetPendingRelTabBarWidth( double fRelTabBarWidth
);
322 /** Returns the current tab bar width in pixels. */
323 tools::Long
GetTabBarWidth() const;
324 /** Returns the current tab bar width relative to the frame window width (0.0 ... 1.0). */
325 SC_DLLPUBLIC
static double GetRelTabBarWidth();
326 /** Returns the pending tab bar width relative to the frame window width (0.0 ... 1.0). */
327 double GetPendingRelTabBarWidth() const { return mfPendingTabBarWidth
;}
329 void DoResize( const Point
& rOffset
, const Size
& rSize
, bool bInner
= false );
330 void RepeatResize( bool bUpdateFix
= true );
332 Point
GetGridOffset() const;
334 bool IsDrawSelMode() const { return bDrawSelMode
; }
335 void SetDrawSelMode(bool bNew
) { bDrawSelMode
= bNew
; }
337 void SetDrawFuncPtr(FuPoor
* pFuncPtr
) { pDrawActual
= pFuncPtr
; }
338 void SetDrawFuncOldPtr(FuPoor
* pFuncPtr
) { pDrawOld
= pFuncPtr
; }
339 FuPoor
* GetDrawFuncPtr() { return pDrawActual
; }
340 FuPoor
* GetDrawFuncOldPtr() { return pDrawOld
; }
342 void DrawDeselectAll();
343 void DrawMarkListHasChanged();
344 void UpdateAnchorHandles();
346 ScPageBreakData
* GetPageBreakData() { return pPageBreakData
.get(); }
347 const std::vector
<ScHighlightEntry
>& GetHighlightRanges() const { return maHighlightRanges
; }
349 void UpdatePageBreakData( bool bForcePaint
= false );
351 ScViewData
& GetViewData() { return aViewData
; }
352 const ScViewData
& GetViewData() const { return aViewData
; }
354 const ScViewRenderingOptions
& GetViewRenderingData() const { return aViewRenderingData
; }
355 void SetViewRenderingData(const ScViewRenderingOptions
& rViewRenderingData
) { aViewRenderingData
= rViewRenderingData
; }
357 ScViewFunctionSet
& GetFunctionSet() { return aFunctionSet
; }
358 ScViewSelectionEngine
* GetSelEngine() { return pSelEngine
.get(); }
360 bool SelMouseButtonDown( const MouseEvent
& rMEvt
);
362 ScDrawView
* GetScDrawView() { return pDrawView
.get(); }
364 bool IsMinimized() const { return bMinimized
; }
367 * Called after moving, copying, inserting or deleting a sheet.
369 * @param bSameTabButMoved true if the same sheet as before is activated.
371 void TabChanged( bool bSameTabButMoved
= false );
372 void SetZoom( const Fraction
& rNewX
, const Fraction
& rNewY
, bool bAll
);
373 SC_DLLPUBLIC
void RefreshZoom();
374 void SetPagebreakMode( bool bSet
);
376 void UpdateLayerLocks();
378 void UpdateDrawTextOutliner();
379 void DigitLanguageChanged();
381 static void UpdateInputLine();
383 void InitRefMode( SCCOL nCurX
, SCROW nCurY
, SCTAB nCurZ
, ScRefType eType
);
384 void DoneRefMode( bool bContinue
= false );
385 void UpdateRef( SCCOL nCurX
, SCROW nCurY
, SCTAB nCurZ
);
389 void FakeButtonUp( ScSplitPos eWhich
);
391 ScGridWindow
* GetActiveWin();
392 vcl::Window
* GetWindowByPos( ScSplitPos ePos
) const { return pGridWin
[ePos
]; }
394 ScSplitPos
FindWindow( const vcl::Window
* pWindow
) const;
396 void SetActivePointer( PointerStyle nPointer
);
398 void ActiveGrabFocus();
400 void ClickCursor( SCCOL nPosX
, SCROW nPosY
, bool bControl
);
402 SC_DLLPUBLIC
void SetCursor( SCCOL nPosX
, SCROW nPosY
, bool bNew
= false );
404 SC_DLLPUBLIC
void CellContentChanged();
405 void SelectionChanged( bool bFromPaste
= false );
406 void CursorPosChanged();
407 void UpdateInputContext();
409 void CheckSelectionTransfer();
411 void InvertHorizontal( ScVSplitPos eWhich
, tools::Long nDragPos
);
412 void InvertVertical( ScHSplitPos eWhich
, tools::Long nDragPos
);
414 Point
GetInsertPos() const;
416 Point
GetChartInsertPos( const Size
& rSize
, const ScRange
& rCellRange
);
417 Point
GetChartDialogPos( const Size
& rDialogSize
, const tools::Rectangle
& rLogicChart
);
419 void UpdateAutoFillMark( bool bFromPaste
= false );
422 void HideAllCursors();
423 void ShowAllCursors();
425 void AlignToCursor( SCCOL nCurX
, SCROW nCurY
, ScFollowMode eMode
,
426 const ScSplitPos
* pWhich
= nullptr );
428 SvxZoomType
GetZoomType() const;
429 void SetZoomType( SvxZoomType eNew
, bool bAll
);
430 sal_uInt16
CalcZoom( SvxZoomType eType
, sal_uInt16 nOldZoom
);
432 bool HasPageFieldDataAtCursor() const;
433 void StartDataSelect();
435 // MoveCursorAbs - absolute
436 // MoveCursorRel - single cells
437 // MoveCursorPage - screen
438 // MoveCursorArea - Data block
439 // MoveCursorEnd - top left / user range
441 SC_DLLPUBLIC
void MoveCursorAbs( SCCOL nCurX
, SCROW nCurY
, ScFollowMode eMode
,
442 bool bShift
, bool bControl
,
443 bool bKeepOld
= false, bool bKeepSel
= false );
444 void MoveCursorRel( SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
,
445 bool bShift
, bool bKeepSel
= false );
446 void MoveCursorPage( SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
,
447 bool bShift
, bool bKeepSel
= false );
448 void MoveCursorArea( SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
,
449 bool bShift
, bool bKeepSel
= false,
450 bool bInteractiveByUser
= false );
451 void MoveCursorEnd( SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
,
452 bool bShift
, bool bKeepSel
= false );
453 void MoveCursorScreen( SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
, bool bShift
);
455 void MoveCursorEnter( bool bShift
); // Shift for direction (select nothing)
457 bool MoveCursorKeyInput( const KeyEvent
& rKeyEvent
);
459 void FindNextUnprot( bool bShift
, bool bInSelection
);
461 void GetPageMoveEndPosition(SCCOL nMovX
, SCROW nMovY
, SCCOL
& rPageX
, SCROW
& rPageY
);
463 SC_DLLPUBLIC
void SetTabNo( SCTAB nTab
, bool bNew
= false, bool bExtendSelection
= false, bool bSameTabButMoved
= false );
464 void SelectNextTab( short nDir
, bool bExtendSelection
);
465 void SelectTabPage( const sal_uInt16 nTab
);
467 void ActivateView( bool bActivate
, bool bFirst
);
468 void ActivatePart( ScSplitPos eWhich
);
469 bool IsInActivatePart() const { return bInActivatePart
; }
471 void SetTimer( ScGridWindow
* pWin
, const MouseEvent
& rMEvt
);
474 void ScrollX( tools::Long nDeltaX
, ScHSplitPos eWhich
, bool bUpdBars
= true );
475 void ScrollY( tools::Long nDeltaY
, ScVSplitPos eWhich
, bool bUpdBars
= true );
476 SC_DLLPUBLIC
void ScrollLines( tools::Long nDeltaX
, tools::Long nDeltaY
); // active
478 bool ScrollCommand( const CommandEvent
& rCEvt
, ScSplitPos ePos
);
479 bool GesturePanCommand(const CommandEvent
& rCEvt
);
480 bool GestureZoomCommand(const CommandEvent
& rCEvt
);
482 void ScrollToObject( const SdrObject
* pDrawObj
);
483 void MakeVisible( const tools::Rectangle
& rHMMRect
);
487 void PaintArea( SCCOL nStartCol
, SCROW nStartRow
, SCCOL nEndCol
, SCROW nEndRow
,
488 ScUpdateMode eMode
= ScUpdateMode::All
,
489 tools::Long nMaxWidthAffectedHint
= -1 );
493 void PaintTopArea( SCCOL nStartCol
, SCCOL nEndCol
);
496 void PaintLeftArea( SCROW nStartRow
, SCROW nEndRow
);
503 void CreateAnchorHandles(SdrHdlList
& rHdl
, const ScAddress
& rAddress
);
505 void UpdateCopySourceOverlay();
506 void UpdateSelectionOverlay();
507 void UpdateShrinkOverlay();
508 void UpdateAllOverlays();
510 void UpdateFormulas( SCCOL nStartCol
= -1, SCROW nStartRow
= -1, SCCOL nEndCol
= -1, SCROW nEndRow
= -1 );
511 void InterpretVisible();
512 void CheckNeedsRepaint();
515 void PaintRangeFinder( tools::Long nNumber
);
516 void AddHighlightRange( const ScRange
& rRange
, const Color
& rColor
);
517 void ClearHighlightRanges();
519 void DoChartSelection( const css::uno::Sequence
< css::chart2::data::HighlightedRange
> & rHilightRanges
);
520 void DoDPFieldPopup(std::u16string_view rPivotTableName
, sal_Int32 nDimensionIndex
, Point aPoint
, Size aSize
);
522 tools::Long
GetGridWidth( ScHSplitPos eWhich
);
523 tools::Long
GetGridHeight( ScVSplitPos eWhich
);
525 void UpdateScrollBars( HeaderType eHeaderType
= BOTH_HEADERS
);
526 void SetNewVisArea();
527 void SetTabProtectionSymbol( SCTAB nTab
, const bool bProtect
); // for protection icon of a tab on tabbar
529 void InvalidateAttribs();
531 void OnLibreOfficeKitTabChanged();
532 void AddWindowToForeignEditView(SfxViewShell
* pViewShell
, ScSplitPos eWhich
);
533 void RemoveWindowFromForeignEditView(SfxViewShell
* pViewShell
, ScSplitPos eWhich
);
534 void MakeEditView( ScEditEngineDefaulter
* pEngine
, SCCOL nCol
, SCROW nRow
);
535 void KillEditView( bool bNoPaint
);
536 void UpdateEditView();
540 void SelectAll( bool bContinue
= false );
541 void SelectAllTables();
542 void DeselectAllTables();
544 void MarkCursor( SCCOL nCurX
, SCROW nCurY
, SCTAB nCurZ
,
545 bool bCols
= false, bool bRows
= false, bool bCellSelection
= false );
546 void InitBlockMode( SCCOL nCurX
, SCROW nCurY
, SCTAB nCurZ
,
547 bool bTestNeg
= false,
548 bool bCols
= false, bool bRows
= false, bool bForceNeg
= false );
549 void InitOwnBlockMode( const ScRange
& rMarkRange
);
550 void DoneBlockMode( bool bContinue
= false );
551 void InitBlockModeHighlight( SCCOL nCurX
, SCROW nCurY
, SCTAB nCurZ
, bool bCols
, bool bRows
);
552 void DoneBlockModeHighlight( bool bContinue
);
554 bool IsBlockMode() const;
556 void ExpandBlock(SCCOL nMovX
, SCROW nMovY
, ScFollowMode eMode
);
557 void ExpandBlockPage(SCCOL nMovX
, SCROW nMovY
);
558 void ExpandBlockArea(SCCOL nMovX
, SCROW nMovY
);
564 * Called to select the specified full column.
566 * @param nCol: Column number to do operation on
567 * @param nModifier: 0, KEY_SHIFT, KEY_MOD1, KEY_SHIFT | KEY_MOD1
570 void MarkColumns(SCCOL nCol
, sal_Int16 nModifier
);
572 * Called to select the specified full row.
574 * @param nRow: Row number to do operation on
575 * @param nModifier: 0, KEY_SHIFT, KEY_MOD1, KEY_SHIFT | KEY_MOD1
577 void MarkRows(SCROW nRow
, sal_Int16 nModifier
);
578 void HighlightOverlay();
580 void MarkDataArea( bool bIncludeCursor
= true );
581 void MarkMatrixFormula();
584 void MarkRange( const ScRange
& rRange
, bool bSetCursor
= true, bool bContinue
= false );
586 bool IsMarking( SCCOL nCol
, SCROW nRow
, SCTAB nTab
) const;
588 void PaintMarks( SCCOL nStartCol
, SCROW nStartRow
, SCCOL nEndCol
, SCROW nEndRow
);
589 void PaintBlock( bool bReset
);
591 void SetMarkData( const ScMarkData
& rNew
);
592 void MarkDataChanged();
594 void LockModifiers( sal_uInt16 nModifiers
);
595 sal_uInt16
GetLockedModifiers() const;
596 void ViewOptionsHasChanged( bool bHScrollChanged
,
597 bool bGraphicsChanged
);
599 Point
GetMousePosPixel();
601 void FreezeSplitters( bool bFreeze
, SplitMethod eSplitMethod
= SC_SPLIT_METHOD_CURSOR
, SCCOLROW nFreezeIndex
= -1 );
603 void SplitAtCursor();
604 void SplitAtPixel( const Point
& rPixel
);
605 void InvalidateSplit();
607 void ErrorMessage(TranslateId pGlobStrId
);
609 void EnableRefInput(bool bFlag
);
611 vcl::Window
* GetFrameWin() const { return pFrameWin
; }
613 bool HasPaintBrush() const { return pBrushDocument
|| pDrawBrushSet
; }
614 ScDocument
* GetBrushDocument() const { return pBrushDocument
.get(); }
615 SfxItemSet
* GetDrawBrushSet() const { return pDrawBrushSet
.get(); }
616 bool IsPaintBrushLocked() const { return bLockPaintBrush
; }
617 void SetBrushDocument( ScDocumentUniquePtr pNew
, bool bLock
);
618 void SetDrawBrushSet( std::unique_ptr
<SfxItemSet
> pNew
, bool bLock
);
619 void ResetBrushDocument();
621 SC_DLLPUBLIC
bool IsAutoSpell() const;
622 void EnableAutoSpell( bool bEnable
);
623 void ResetAutoSpell();
624 void ResetAutoSpellForContentChange();
625 void SetAutoSpellData( SCCOL nPosX
, SCROW nPosY
, const std::vector
<editeng::MisspellRanges
>* pRanges
);
626 /// @see ScModelObj::getRowColumnHeaders().
627 void getRowColumnHeaders(const tools::Rectangle
& rRectangle
, tools::JsonWriter
& rJsonWriter
);
628 /// @see ScModelObj::getSheetGeometryData()
629 OString
getSheetGeometryData(bool bColumns
, bool bRows
, bool bSizes
, bool bHidden
,
630 bool bFiltered
, bool bGroups
);
631 void extendTiledAreaIfNeeded();
633 static void OnLOKNoteStateChanged(const ScPostIt
* pNote
);
635 SCROW
GetLOKStartHeaderRow() const { return mnLOKStartHeaderRow
; }
636 SCROW
GetLOKEndHeaderRow() const { return mnLOKEndHeaderRow
; }
637 SCCOL
GetLOKStartHeaderCol() const { return mnLOKStartHeaderCol
; }
638 SCCOL
GetLOKEndHeaderCol() const { return mnLOKEndHeaderCol
; }
640 void SyncGridWindowMapModeFromDrawMapMode();
643 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */