24#include <osl/diagnose.h>
53 if (bCellProtected && !bSelectLocked)
56 if (!bCellProtected && !bSelectUnlocked)
63 SCROW nRowEnd,
SCTAB nTab,
bool bSelectLocked,
bool bSelectUnlocked)
68 for (
SCROW row = nRowStart; row <= nRowEnd; ++row)
69 if (!isCellQualified(pDoc, col, row, nTab, bSelectLocked, bSelectUnlocked))
75void moveCursorByProtRule(
78 bool bSelectLocked =
true;
79 bool bSelectUnlocked =
true;
81 if (pTabProtection && pTabProtection->
isProtected())
91 SCCOL nNewUnhiddenCol = rCol + 1;
93 while(pDoc->
ColHidden(nNewUnhiddenCol, nTab,
nullptr, &nEndCol))
95 if(nNewUnhiddenCol >= pDoc->
MaxCol())
98 i += nEndCol - nNewUnhiddenCol + 1;
99 nNewUnhiddenCol = nEndCol +1;
102 if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
104 rCol = nNewUnhiddenCol;
109 for (
SCCOL i = 0;
i > nMovX && rCol > 0; --
i)
111 SCCOL nNewUnhiddenCol = rCol - 1;
113 while(pDoc->
ColHidden(nNewUnhiddenCol, nTab, &nStartCol))
115 if(nNewUnhiddenCol <= 0)
118 i -= nNewUnhiddenCol - nStartCol + 1;
119 nNewUnhiddenCol = nStartCol - 1;
122 if (!isCellQualified(pDoc, nNewUnhiddenCol, rRow, nTab, bSelectLocked, bSelectUnlocked))
124 rCol = nNewUnhiddenCol;
132 SCROW nNewUnhiddenRow = rRow + 1;
134 while(pDoc->
RowHidden(nNewUnhiddenRow, nTab,
nullptr, &nEndRow))
136 if(nNewUnhiddenRow >= pDoc->
MaxRow())
139 i += nEndRow - nNewUnhiddenRow + 1;
140 nNewUnhiddenRow = nEndRow + 1;
143 if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
145 rRow = nNewUnhiddenRow;
150 for (
SCROW i = 0;
i > nMovY && rRow > 0; --
i)
152 SCROW nNewUnhiddenRow = rRow - 1;
154 while(pDoc->
RowHidden(nNewUnhiddenRow, nTab, &nStartRow))
156 if(nNewUnhiddenRow <= 0)
159 i -= nNewUnhiddenRow - nStartRow + 1;
160 nNewUnhiddenRow = nStartRow - 1;
163 if (!isCellQualified(pDoc, rCol, nNewUnhiddenRow, nTab, bSelectLocked, bSelectUnlocked))
165 rRow = nNewUnhiddenRow;
178 else if (rCol > pDoc->
MaxCol())
189 else if (rRow > pDoc->
MaxRow())
201 bool bSelectLocked =
true;
202 bool bSelectUnlocked =
true;
203 if (pTabProtection && pTabProtection->
isProtected())
211 SCROW rowStart = std::min(rRow, nStartY);
212 SCROW rowEnd = std::max(rRow, nStartY);
214 for (
SCROW i = rowStart;
i <= rowEnd && rCol < nStartX;)
217 while (tmpCol < pDoc->MaxCol() && pDoc->
IsHorOverlapped(tmpCol, i, nTab))
222 if (tmpCol > nStartX)
224 if (!areCellsQualified(pDoc, rCol + 1, rowStart, tmpCol, rowEnd, nTab,
225 bSelectLocked, bSelectUnlocked))
235 SCROW rowStart = std::min(rRow, nStartY);
236 SCROW rowEnd = std::max(rRow, nStartY);
238 for (
SCROW i = rowStart; i <= rowEnd && rCol > nStartX;)
246 if (tmpCol < nStartX)
248 if (!areCellsQualified(pDoc, rCol - 1, rowStart, tmpCol, rowEnd, nTab,
249 bSelectLocked, bSelectUnlocked))
260 SCCOL colStart = std::min(rCol, nStartX);
261 SCCOL colEnd = std::max(rCol, nStartX);
263 for (
SCCOL i = colStart;
i <= colEnd && rRow < nStartY;)
266 while (tmpRow < pDoc->MaxRow() && pDoc->
IsVerOverlapped(i, tmpRow, nTab))
271 if (tmpRow > nStartY)
273 if (!areCellsQualified(pDoc, colStart, rRow + 1, colEnd, tmpRow, nTab,
274 bSelectLocked, bSelectUnlocked))
284 SCCOL colStart = std::min(rCol, nStartX);
285 SCCOL colEnd = std::max(rCol, nStartX);
287 for (
SCCOL i = colStart; i <= colEnd && rRow > nStartY;)
295 if (tmpRow < nStartY)
297 if (!areCellsQualified(pDoc, colStart, rRow - 1, colEnd, tmpRow, nTab,
298 bSelectLocked, bSelectUnlocked))
314 if (nMovX > 0 && nStartX < pDoc->MaxCol() && rCol < nStartX)
316 SCROW rowStart = std::min(rRow, nStartY);
317 SCROW rowEnd = std::max(rRow, nStartY);
318 for (
SCROW i = rowStart;
i <= rowEnd && tmpCol < nStartX;)
331 if (tmpCol < nStartX)
334 else if (nMovX < 0 && nStartX > 0 && rCol > nStartX)
336 SCROW rowStart = std::min(rRow, nStartY);
337 SCROW rowEnd = std::max(rRow, nStartY);
338 for (
SCROW i = rowStart; i <= rowEnd && tmpCol > nStartX;)
351 if (tmpCol > nStartX)
355 if (nMovY > 0 && nStartY < pDoc->MaxRow() && rRow < nStartY)
357 SCCOL colStart = std::min(rCol, nStartX);
358 SCCOL colEnd = std::max(rCol, nStartX);
359 for (
SCCOL i = colStart;
i <= colEnd && tmpRow < nStartY;)
372 if (tmpRow < nStartY)
375 else if (nMovY < 0 && nStartY > 0 && rRow > nStartY)
377 SCCOL colStart = std::min(rCol, nStartX);
378 SCCOL colEnd = std::max(rCol, nStartX);
379 for (
SCCOL i = colStart; i <= colEnd && tmpRow > nStartY;)
392 if (tmpRow > nStartY)
406 if (!rDoc.ValidCol(nStartCol)) nStartCol = rDoc.
MaxCol();
407 if (!rDoc.ValidRow(nStartRow)) nStartRow = rDoc.MaxRow();
408 if (!rDoc.ValidCol(nEndCol)) nEndCol = rDoc.MaxCol();
409 if (!rDoc.ValidRow(nEndRow)) nEndRow = rDoc.MaxRow();
411 bool bLeft = (nStartCol==0 && nEndCol==rDoc.MaxCol());
412 bool bTop = (nStartRow==0 && nEndRow==rDoc.MaxRow());
454 bool bTestNeg,
bool bCols,
bool bRows,
bool bForceNeg )
460 if (!rDoc.ValidCol(nCurX)) nCurX = rDoc.
MaxCol();
461 if (!rDoc.ValidRow(nCurY)) nCurY = rDoc.MaxRow();
550 bool bCols,
bool bRows,
bool bCellSelection )
558 OSL_FAIL(
"MarkCursor not in BlockMode" );
563 nCurY = rDocument.
MaxRow();
565 nCurX = rDocument.
MaxCol();
592 if ( bCellSelection )
604 }
while (oldSel != cellSel);
646 if ( !bCols && !bRows )
693 if (nMovX != 0 && nPageX == 0) nPageX = (nMovX>0) ? 1 : -1;
694 if (nMovY != 0 && nPageY == 0) nPageY = (nMovY>0) ? 1 : -1;
702 bool bInteractiveByUser)
713 bool bIncrementallyExpandToDocLimits(
false);
735 bIncrementallyExpandToDocLimits = bInteractiveByUser && (nMovX == 1 || nMovY == 1) &&
743 SCCOL nVirtualX = bLegacyCellSelection ? nNewX : nCurX;
744 SCROW nVirtualY = bLegacyCellSelection ? nNewY : nCurY;
748 for (
i=0;
i<nMovX;
i++ )
751 for (
i=0;
i<-nMovX;
i++ )
754 for (
i=0;
i<nMovY;
i++ )
757 for (
i=0;
i<-nMovY;
i++ )
762 if (nMovX != 0 && nNewX == rDoc.
MaxCol())
765 if (bIncrementallyExpandToDocLimits)
769 if (!pTab->HasData(nNewX, nCurY))
771 SCCOL nLastUsedCol(0);
772 SCROW nLastUsedRow(0);
774 SCCOL nJumpFrom = std::max(nCurX, nLastUsedCol);
775 nNewX = ((nJumpFrom / 13) + 2) * 13 - 1;
780 if (nMovY != 0 && nNewY == rDoc.
MaxRow())
783 if (bIncrementallyExpandToDocLimits)
787 if (!pTab->HasData(nCurX, nNewY))
789 SCCOL nLastUsedCol(0);
790 SCROW nLastUsedRow(0);
792 SCROW nJumpFrom = std::max(nCurY, nLastUsedRow);
793 nNewY = ((nJumpFrom / 500) + 2) * 500 - 1;
812 rAreaX = nNewX - nCurX;
813 rAreaY = nNewY - nCurY;
823 bool bSkipProtected =
false, bSkipUnprotected =
false;
831 bool bSkipCell =
false;
846 if (bSkipProtected && !bSkipCell)
848 if (bSkipUnprotected && !bSkipCell)
853 if (rCurX <= 0 || rCurX >= nMaxCol)
892 bool bSkipProtected =
false, bSkipUnprotected =
false;
900 bool bSkipCell =
false;
903 SCROW nFirstSameHiddenRow = -1;
904 SCROW nLastSameHiddenRow = -1;
905 bool bRowHidden =
false;
906 SCROW nFirstSameIsVerOverlapped = -1;
907 SCROW nLastSameIsVerOverlapped = -1;
908 bool bIsVerOverlapped =
false;
909 SCROW nFirstSameHasAttribRow = -1;
910 SCROW nLastSameHasAttribRow = -1;
911 bool bHasAttribProtected =
false;
914 if( rCurY < nFirstSameHiddenRow || rCurY > nLastSameHiddenRow )
915 bRowHidden = rDoc.
RowHidden(rCurY, nTab, &nFirstSameHiddenRow, &nLastSameHiddenRow);
916 bSkipCell = bRowHidden;
919 if( rCurY < nFirstSameIsVerOverlapped || rCurY > nLastSameIsVerOverlapped )
920 bIsVerOverlapped = rDoc.
IsVerOverlapped(rCurX, rCurY, nTab, &nFirstSameIsVerOverlapped, &nLastSameIsVerOverlapped);
921 bSkipCell = bIsVerOverlapped;
923 if (bSkipProtected && !bSkipCell)
925 if( rCurY < nFirstSameHasAttribRow || rCurY > nLastSameHasAttribRow )
927 &nFirstSameHasAttribRow, &nLastSameHasAttribRow);
928 bSkipCell = bHasAttribProtected;
930 if (bSkipUnprotected && !bSkipCell)
932 if( rCurY < nFirstSameHasAttribRow || rCurY > nLastSameHasAttribRow )
934 &nFirstSameHasAttribRow, &nLastSameHasAttribRow);
935 bSkipCell = !bHasAttribProtected;
940 if (rCurY <= 0 || rCurY >= rDoc.
MaxRow())
976 if (!nMovX && !nMovY)
996 bool bSelectLocked =
true;
997 bool bSelectUnlocked =
true;
999 if (pTabProtection && pTabProtection->
isProtected())
1005 moveCursorByProtRule(nNewX, nNewY, nMovX, nMovY, nRefTab, &rDoc);
1006 checkBoundary(&rDoc, nNewX, nNewY);
1010 SCCOL nTempX = nNewX;
1017 if (!checkBoundary(&rDoc, nTempX, nNewY))
1020 if (isCellQualified(&rDoc, nTempX, nNewY, nRefTab, bSelectLocked, bSelectUnlocked))
1026 SCROW nTempY = nNewY;
1033 if (!checkBoundary(&rDoc, nNewX, nTempY))
1036 if (isCellQualified(&rDoc, nNewX, nTempY, nRefTab, bSelectLocked, bSelectUnlocked))
1042 SCCOL nTargetCol = nNewX;
1043 SCROW nTargetRow = nNewY;
1045 ((nNewX != rDoc.
MaxCol()) || (nNewY != rDoc.
MaxRow())))
1070 if (pMergeAttr && pMergeAttr->
IsMerged())
1119 if (pWin && pWin->IsVisible())
1120 pWin->UpdateCopySourceOverlay();
1126 if ( pWin && pWin->IsVisible() )
1127 pWin->UpdateSelectionOverlay();
1133 if ( pWin && pWin->IsVisible() )
1134 pWin->UpdateShrinkOverlay();
1140 if ( pWin && pWin->IsVisible() )
1141 pWin->UpdateAllOverlays();
1177 bool bDidReset =
false;
1195 if ( bReset && !bDidReset )
1259 double fZoomFactor =
static_cast<double>(
Fraction(nZoom,100));
1260 fScaleX *= fZoomFactor;
1261 fScaleY *= fZoomFactor;
1265 for (nCol=0; nCol<nFixPosX; nCol++)
1268 sal_uInt16 nColTwips = pDoc->
GetColWidth( nCol, nTab );
1271 nBlockX +=
static_cast<tools::Long>(nColTwips * fScaleX);
1272 if (nBlockX > nWindowX)
1276 for (nCol=nStartCol; nCol<=nEndCol; nCol++)
1278 sal_uInt16 nColTwips = pDoc->
GetColWidth( nCol, nTab );
1281 nBlockX +=
static_cast<tools::Long>(nColTwips * fScaleX);
1282 if (nBlockX > nWindowX)
1288 for (
SCROW nRow = 0; nRow <= nFixPosY-1; ++nRow)
1297 nBlockY +=
static_cast<tools::Long>(nRowTwips * fScaleY);
1298 if (nBlockY > nWindowY)
1302 for (
SCROW nRow = nStartRow; nRow <= nEndRow; ++nRow)
1307 nBlockY +=
static_cast<tools::Long>(nRowTwips * fScaleY);
1308 if (nBlockY > nWindowY)
1318 sal_uInt16 nZoom = 100;
1322 case SvxZoomType::PERCENT:
1326 case SvxZoomType::OPTIMAL:
1347 if ( nTab < nStartTab && nTab > nEndTab )
1359 if ( nStartCol < nFixPosX )
1360 nStartCol = nFixPosX;
1367 if ( nStartRow < nFixPosY )
1368 nStartRow = nFixPosY;
1376 Size aWinSize =
pGridWin[eUsedPart]->GetOutputSizePixel();
1380 if ( nFixPosX != 0 )
1382 if ( nFixPosY != 0 )
1391 while ( nMax > nMin )
1393 sal_uInt16 nTest = (nMin+nMax+1)/2;
1396 &rDoc, nTab, nStartCol, nStartRow, nEndCol, nEndRow,
1397 nFixPosX, nFixPosY ) )
1402 OSL_ENSURE( nMin == nMax,
"Nesting is wrong" );
1405 if ( nZoom != nOldZoom )
1410 if ( nStartCol <= nEndCol )
1412 if ( nStartRow <= nEndRow )
1420 case SvxZoomType::WHOLEPAGE:
1421 case SvxZoomType::PAGEWIDTH:
1428 SfxStyleFamily::Page );
1430 OSL_ENSURE( pStyleSheet,
"PageStyle not found :-/" );
1454 GetOutputSizePixel().Width();
1462 else if ( nOtherWidth > aWinSize.
Width() )
1469 GetOutputSizePixel().Height();
1477 else if ( nOtherHeight > aWinSize.
Height() )
1490 nZoom =
static_cast<sal_uInt16
>(nZoomX);
1492 if (
eType == SvxZoomType::WHOLEPAGE && nZoomY > 0 && nZoomY < nZoom)
1493 nZoom =
static_cast<sal_uInt16
>(nZoomY);
1499 OSL_FAIL(
"Unknown Zoom-Revision");
1525 if (pWin && pWin->IsVisible())
1526 pWin->HideNoteMarker();
1537 OSL_ENSURE(
pDrawView,
"ScTabView::MakeDrawLayer does not work");
1543 pWin->DrawLayerCreated();
1555 if (
SC_MOD()->IsInExecuteDrop() )
1565 bool bFocus = pParent && pParent->
has_focus();
1567 if (pGlobStrId && pGlobStrId == STR_PROTECTIONERR)
1571 pGlobStrId = STR_READONLYERR;
1576 VclMessageType::Info, VclButtonsType::Ok,
1582 weld::Window* pGrabOnClose = bFocus ? pParent :
nullptr;
1592 std::unique_ptr<ScPageBreakData> pNewData;
1610 pNewData->AddPages();
void PutInOrder(T &nStart, T &nEnd)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
const ScDocument & GetDocument() const
ScDrawLayer * MakeDrawLayer()
SfxPrinter * GetPrinter(bool bCreateIfNotExist=true)
double GetOutputFactor() const
SC_DLLPUBLIC SCCOL GetAllocatedColumnsCount(SCTAB nTab) const
SC_DLLPUBLIC sal_uInt16 GetRowHeight(SCROW nRow, SCTAB nTab, bool bHiddenAsZero=true) const
bool IsHorOverlapped(SCCOL nCol, SCROW nRow, SCTAB nTab) const
SC_DLLPUBLIC sal_uInt16 GetColWidth(SCCOL nCol, SCTAB nTab, bool bHiddenAsZero=true) const
bool ValidRow(SCROW nRow) const
SC_DLLPUBLIC const ScTableProtection * GetTabProtection(SCTAB nTab) const
SC_DLLPUBLIC ScTable * FetchTable(SCTAB nTab)
SC_DLLPUBLIC bool ExtendMerge(SCCOL nStartCol, SCROW nStartRow, SCCOL &rEndCol, SCROW &rEndRow, SCTAB nTab, bool bRefresh=false)
SC_DLLPUBLIC SCCOL MaxCol() const
SC_DLLPUBLIC SCROW MaxRow() const
SC_DLLPUBLIC OUString GetPageStyle(SCTAB nTab) const
SC_DLLPUBLIC bool RowHidden(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
SC_DLLPUBLIC bool HasAttrib(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, SCCOL nCol2, SCROW nRow2, SCTAB nTab2, HasAttrFlags nMask) const
void FindAreaPos(SCCOL &rCol, SCROW &rRow, SCTAB nTab, ScMoveDirection eDirection) const
SC_DLLPUBLIC ScStyleSheetPool * GetStyleSheetPool() const
bool ValidCol(SCCOL nCol) const
SC_DLLPUBLIC void ExtendOverlapped(SCCOL &rStartCol, SCROW &rStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab) const
bool IsVerOverlapped(SCCOL nCol, SCROW nRow, SCTAB nTab, SCROW *nStartRow=nullptr, SCROW *nEndRow=nullptr) const
SC_DLLPUBLIC bool ColHidden(SCCOL nCol, SCTAB nTab, SCCOL *pFirstCol=nullptr, SCCOL *pLastCol=nullptr) const
void SkipOverlapped(SCCOL &rCol, SCROW &rRow, SCTAB nTab) const
SC_DLLPUBLIC bool GetPrintArea(SCTAB nTab, SCCOL &rEndCol, SCROW &rEndRow, bool bNotes=true) const
SC_DLLPUBLIC bool HasTable(SCTAB nTab) const
SC_DLLPUBLIC sal_uInt16 GetPrintRangeCount(SCTAB nTab)
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
SC_DLLPUBLIC SCTAB GetTableCount() const
static SC_DLLPUBLIC double nScreenPPTX
Horizontal pixel per twips factor.
static SC_DLLPUBLIC double nScreenPPTY
Vertical pixel per twips factor.
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
const ScRange & GetMultiMarkArea() const
void SelectTable(SCTAB nTab, bool bNew)
const ScRange & GetMarkArea() const
bool IsMultiMarked() const
void SetMarkNegative(bool bFlag)
void SetMarking(bool bFlag)
bool IsMarkNegative() const
bool IsColumnMarked(SCCOL nCol) const
bool IsRowMarked(SCROW nRow) const
bool IsCellMarked(SCCOL nCol, SCROW nRow, bool bNoSimple=false) const
bool GetMarkingFlag() const
void SetMarkArea(const ScRange &rRange)
SCCOL GetColMerge() const
SCROW GetRowMerge() const
SC_DLLPUBLIC const ScInputOptions & GetInputOptions()
void ResetBreaks(SCTAB nTab)
virtual SfxPrinter * GetPrinter(bool bCreate=false) override
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
bool IsRefInputMode() const
void UpdatePageBreakData(bool bForcePaint=false)
void InitBlockMode(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bTestNeg=false, bool bCols=false, bool bRows=false, bool bForceNeg=false)
std::array< VclPtr< ScColBar >, 2 > pColBar
std::unique_ptr< ScPageBreakData > pPageBreakData
void PaintTopArea(SCCOL nStartCol, SCCOL nEndCol)
ScHeaderFunctionSet aHdrFunc
void AlignToCursor(SCCOL nCurX, SCROW nCurY, ScFollowMode eMode, const ScSplitPos *pWhich=nullptr)
void DoneBlockMode(bool bContinue=false)
void ErrorMessage(TranslateId pGlobStrId)
sal_uInt16 CalcZoom(SvxZoomType eType, sal_uInt16 nOldZoom)
void GetAreaMoveEndPosition(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, SCCOL &rAreaX, SCROW &rAreaY, ScFollowMode &rMode, bool bInteractiveByUser=false)
void SelectionChanged(bool bFromPaste=false)
std::array< VclPtr< ScGridWindow >, 4 > pGridWin
ScViewSelectionEngine * GetSelEngine()
tools::Long GetGridWidth(ScHSplitPos eWhich)
void InitRefMode(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScRefType eType)
void MarkCursor(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bCols=false, bool bRows=false, bool bCellSelection=false)
void PaintArea(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, ScUpdateMode eMode=ScUpdateMode::All)
tools::Long GetGridHeight(ScVSplitPos eWhich)
void SkipCursorHorizontal(SCCOL &rCurX, SCROW &rCurY, SCCOL nOldX, SCCOL nMovX)
void UpdateCopySourceOverlay()
void UpdateSelectionOverlay()
void SelectAll(bool bContinue=false)
std::unique_ptr< ScDrawView > pDrawView
void UpdateShrinkOverlay()
std::array< VclPtr< ScRowBar >, 2 > pRowBar
void UpdateRef(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ)
void ExpandBlockPage(SCCOL nMovX, SCROW nMovY)
void InitOwnBlockMode(const ScRange &rMarkRange)
void SkipCursorVertical(SCCOL &rCurX, SCROW &rCurY, SCROW nOldY, SCROW nMovY)
void ExpandBlock(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode)
void GetPageMoveEndPosition(SCCOL nMovX, SCROW nMovY, SCCOL &rPageX, SCROW &rPageY)
void PaintBlock(bool bReset)
divide PaintBlock into two methods: RepaintBlock and RemoveBlock or similar
void PaintMarks(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow)
void ExpandBlockArea(SCCOL nMovX, SCROW nMovY)
void PaintLeftArea(SCROW nStartRow, SCROW nEndRow)
std::shared_ptr< weld::MessageDialog > m_xMessageBox
bool IsMarking(SCCOL nCol, SCROW nRow, SCTAB nTab) const
sheet protection state container
bool isOptionEnabled(Option eOption) const
virtual bool isProtected() const override
SCCOL CellsAtX(SCCOL nPosX, SCCOL nDir, ScHSplitPos eWhichX, sal_uInt16 nScrSizeY=SC_SIZE_NONE) const
tools::Long GetPageUpDownOffset() const
ScMarkData & GetMarkData()
ScDocument & GetDocument() const
SCROW GetPosY(ScVSplitPos eWhich, SCTAB nForTab=-1) const
SCCOL GetRefStartX() const
void SetPosY(ScVSplitPos eWhich, SCROW nNewPosY)
ScSplitMode GetHSplitMode() const
ScDocShell * GetDocShell() const
ScTabViewShell * GetViewShell() const
ScMarkType GetSimpleArea(SCCOL &rStartCol, SCROW &rStartRow, SCTAB &rStartTab, SCCOL &rEndCol, SCROW &rEndRow, SCTAB &rEndTab) const
static tools::Long ToPixel(sal_uInt16 nTwips, double nFactor)
ScSplitPos GetActivePart() const
weld::Window * GetDialogParent()
SCROW CellsAtY(SCROW nPosY, SCROW nDir, ScVSplitPos eWhichY, sal_uInt16 nScrSizeX=SC_SIZE_NONE) const
SCROW GetRefStartY() const
void SetOldCursor(SCCOL nNewX, SCROW nNewY)
ScSplitMode GetVSplitMode() const
bool IsPagebreakMode() const
void SetPosX(ScHSplitPos eWhich, SCCOL nNewPosX)
SfxBindings & GetBindings()
SCCOL GetPosX(ScHSplitPos eWhich, SCTAB nForTab=-1) const
void CursorPosChanging(bool bShift, bool bMod1)
void Invalidate(sal_uInt16 nId)
virtual SfxStyleSheetBase * Find(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits n=SfxStyleSearchBits::All)
constexpr tools::Long Height() const
tools::Long AdjustHeight(tools::Long n)
void setWidth(tools::Long nWidth)
tools::Long AdjustWidth(tools::Long n)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
#define LINK(Instance, Class, Member)
RttiCompleteObjectLocator col
OUString ScResId(TranslateId aId)
constexpr TypedWhichId< ScMergeAttr > ATTR_MERGE(144)
VCL_DLLPUBLIC Application * GetpApp()
IMPL_STATIC_LINK_NOARG(ScTabView, InstallLOKNotifierHdl, void *, vcl::ILibreOfficeKitNotifier *)
static bool lcl_FitsInWindow(double fScaleX, double fScaleY, sal_uInt16 nZoom, tools::Long nWindowX, tools::Long nWindowY, const ScDocument *pDoc, SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCCOL nFixPosX, SCROW nFixPosY)
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
ScHSplitPos WhichH(ScSplitPos ePos)
ScFollowMode
Screen behavior related to cursor movements.
ScVSplitPos WhichV(ScSplitPos ePos)