sc/source/ui/StatisticsDialogs/FourierAnalysisDialog.cxx | 3 +- sc/source/ui/StatisticsDialogs/TableFillingAndNavigationTools.cxx | 2 - sc/source/ui/dataprovider/datatransformation.cxx | 8 ++--- sc/source/ui/dbgui/tpsort.cxx | 4 +- sc/source/ui/dbgui/tpsubt.cxx | 14 +++++----- sc/source/ui/docshell/externalrefmgr.cxx | 6 ++-- sc/source/ui/inc/tpsort.hxx | 3 +- sc/source/ui/inc/tpsubt.hxx | 6 +--- sc/source/ui/pagedlg/areasdlg.cxx | 3 +- sc/source/ui/unoobj/chart2uno.cxx | 7 ++--- sc/source/ui/view/tabview.cxx | 6 ++-- sc/source/ui/view/viewfun2.cxx | 2 - 12 files changed, 34 insertions(+), 30 deletions(-)
New commits: commit 12fd3cf163bd922e1fc2b4e2c31c7f77c2313676 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Dec 21 20:20:54 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Tue Dec 22 10:44:00 2020 +0100 more jumbo sheet work Change-Id: I67884a0c0b897d8d60f2cfaba644e01f90f7d164 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108123 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/source/ui/StatisticsDialogs/FourierAnalysisDialog.cxx b/sc/source/ui/StatisticsDialogs/FourierAnalysisDialog.cxx index 88e7fef5d1d8..9688e17ac68f 100644 --- a/sc/source/ui/StatisticsDialogs/FourierAnalysisDialog.cxx +++ b/sc/source/ui/StatisticsDialogs/FourierAnalysisDialog.cxx @@ -14,6 +14,7 @@ #include <FourierAnalysisDialog.hxx> #include <scresid.hxx> #include <strings.hrc> +#include <o3tl/safeint.hxx> ScFourierAnalysisDialog::ScFourierAnalysisDialog(SfxBindings* pSfxBindings, SfxChildWindow* pChildWindow, @@ -142,7 +143,7 @@ bool ScFourierAnalysisDialog::InputRangesValid() if (mbWithLabels) --nLastOutputRow; - if (nLastOutputRow > MAXROW) + if (nLastOutputRow > o3tl::make_unsigned(mDocument.MaxRow())) { mxErrorMessage->set_label(ScResId(STR_MESSAGE_OUTPUT_TOO_LONG)); return false; diff --git a/sc/source/ui/StatisticsDialogs/TableFillingAndNavigationTools.cxx b/sc/source/ui/StatisticsDialogs/TableFillingAndNavigationTools.cxx index 3047ba34f46a..46f58599e131 100644 --- a/sc/source/ui/StatisticsDialogs/TableFillingAndNavigationTools.cxx +++ b/sc/source/ui/StatisticsDialogs/TableFillingAndNavigationTools.cxx @@ -169,7 +169,7 @@ void AddressWalkerWriter::writeFormulas(const std::vector<OUString>& rFormulas) if (!nLength) return; - const size_t nMaxLen = MAXROW - mCurrentAddress.Row() + 1; + const size_t nMaxLen = mpDocShell->GetDocument().MaxRow() - mCurrentAddress.Row() + 1; // If not done already, trim the length to fit. if (nLength > nMaxLen) nLength = nMaxLen; diff --git a/sc/source/ui/dataprovider/datatransformation.cxx b/sc/source/ui/dataprovider/datatransformation.cxx index 5a7be1c023cb..7a03f7ed3871 100644 --- a/sc/source/ui/dataprovider/datatransformation.cxx +++ b/sc/source/ui/dataprovider/datatransformation.cxx @@ -32,7 +32,7 @@ DataTransformation::~DataTransformation() SCROW DataTransformation::getLastRow(const ScDocument& rDoc, SCCOL nCol) { - SCROW nEndRow = MAXROW; + SCROW nEndRow = rDoc.MaxRow(); return rDoc.GetLastDataRow(0, nCol, nCol, nEndRow); } @@ -50,7 +50,7 @@ void ColumnRemoveTransformation::Transform(ScDocument& rDoc) const { for (auto& rCol : maColumns) { - rDoc.DeleteCol(0, 0, MAXROW, 0, rCol, 1); + rDoc.DeleteCol(0, 0, rDoc.MaxRow(), 0, rCol, 1); } } @@ -72,7 +72,7 @@ SplitColumnTransformation::SplitColumnTransformation(SCCOL nCol, sal_Unicode cSe void SplitColumnTransformation::Transform(ScDocument& rDoc) const { - rDoc.InsertCol(0, 0, MAXROW, 0, mnCol + 1, 1); + rDoc.InsertCol(0, 0, rDoc.MaxRow(), 0, mnCol + 1, 1); SCROW nEndRow = getLastRow(rDoc, mnCol); for (SCROW nRow = 0; nRow <= nEndRow; ++nRow) @@ -146,7 +146,7 @@ void MergeColumnTransformation::Transform(ScDocument& rDoc) const if (itr == nTargetCol) continue; - rDoc.DeleteCol(0, 0, MAXROW, 0, itr, 1); + rDoc.DeleteCol(0, 0, rDoc.MaxRow(), 0, itr, 1); } } diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx index f8c2a996bd22..4b37477b5c30 100644 --- a/sc/source/ui/dbgui/tpsort.cxx +++ b/sc/source/ui/dbgui/tpsort.cxx @@ -339,7 +339,7 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) SCCOL nMaxCol = rDoc.ClampToAllocatedColumns(nTab, aSortData.nCol2); SCCOL col; - for ( col=nFirstSortCol; col<=nMaxCol && i<SC_MAXFIELDS; col++ ) + for ( col=nFirstSortCol; col<=nMaxCol && i<SC_MAXFIELDS(rDoc.GetSheetLimits()); col++ ) { aFieldName = rDoc.GetString(col, nFirstSortRow, nTab); if ( !bHasHeader || aFieldName.isEmpty() ) @@ -360,7 +360,7 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) SCROW nMaxRow = aSortData.nRow2; SCROW row; - for ( row=nFirstSortRow; row<=nMaxRow && i<SC_MAXFIELDS; row++ ) + for ( row=nFirstSortRow; row<=nMaxRow && i<SC_MAXFIELDS(rDoc.GetSheetLimits()); row++ ) { aFieldName = rDoc.GetString(nFirstSortCol, row, nTab); if ( !bHasHeader || aFieldName.isEmpty() ) diff --git a/sc/source/ui/dbgui/tpsubt.cxx b/sc/source/ui/dbgui/tpsubt.cxx index 4a8d8d85ddab..e99e56bf8d33 100644 --- a/sc/source/ui/dbgui/tpsubt.cxx +++ b/sc/source/ui/dbgui/tpsubt.cxx @@ -31,6 +31,7 @@ #include <subtotals.hrc> #include <tpsubt.hxx> +#include <tpsort.hxx> #include <memory> #include <osl/diagnose.h> @@ -83,7 +84,8 @@ void ScTpSubTotalGroup::Init() mxLbFunctions->connect_changed( LINK( this, ScTpSubTotalGroup, SelectTreeListBoxHdl) ); mxLbSelectAllColumns->connect_clicked( LINK( this, ScTpSubTotalGroup, CheckBoxHdl ) ); - nFieldArr[0] = 0; + mnFieldArr.resize(SC_MAXFIELDS(pDoc->GetSheetLimits())); + mnFieldArr[0] = 0; FillListBoxes(); } @@ -206,7 +208,7 @@ bool ScTpSubTotalGroup::DoFillItemSet( sal_uInt16 nGroupNo, theSubTotalData.nRow2 = rSubTotalData.nRow2; theSubTotalData.bGroupActive[nGroupIdx] = (nGroup != 0); theSubTotalData.nField[nGroupIdx] = (nGroup != 0) - ? nFieldArr[nGroup-1] + ? mnFieldArr[nGroup-1] : static_cast<SCCOL>(0); if ( nEntryCount>0 && nCheckCount>0 && nGroup!=0 ) @@ -223,7 +225,7 @@ bool ScTpSubTotalGroup::DoFillItemSet( sal_uInt16 nGroupNo, OSL_ENSURE( nCheck <= nCheckCount, "Range error :-(" ); nFunction = mxLbColumns->get_id(i).toUInt32(); - pSubTotals[nCheck] = nFieldArr[i]; + pSubTotals[nCheck] = mnFieldArr[i]; pFunctions[nCheck] = LbPosToFunc( nFunction ); nCheck++; } @@ -259,14 +261,14 @@ void ScTpSubTotalGroup::FillListBoxes() mxLbGroup->insert_text(0, aStrNone ); sal_uInt16 i=0; - for ( col=nFirstCol; col<=nMaxCol && i<SC_MAXFIELDS; col++ ) + for ( col=nFirstCol; col<=nMaxCol && i<SC_MAXFIELDS(pDoc->GetSheetLimits()); col++ ) { aFieldName = pDoc->GetString(col, nFirstRow, nTab); if ( aFieldName.isEmpty() ) { aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", ScColToAlpha( col )); } - nFieldArr[i] = col; + mnFieldArr[i] = col; mxLbGroup->insert_text(i+1, aFieldName); mxLbColumns->insert(i); mxLbColumns->set_toggle(i, TRISTATE_FALSE); @@ -285,7 +287,7 @@ sal_uInt16 ScTpSubTotalGroup::GetFieldSelPos( SCCOL nField ) for ( sal_uInt16 n=0; n<nFieldCount && !bFound; n++ ) { - if ( nFieldArr[n] == nField ) + if ( mnFieldArr[n] == nField ) { nFieldPos = n; bFound = true; diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index c505e1501370..176e65836b25 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -1575,7 +1575,7 @@ static std::unique_ptr<ScTokenArray> convertToTokenArray( { rSrcDoc.FillMatrix(*xMat, nTab, nCol1, nRow1, nCol2, nRow2, &rHostDoc.GetSharedStringPool()); } - else if ((nCol1 == 0 && nCol2 == MAXCOL) || (nRow1 == 0 && nRow2 == MAXROW)) + else if ((nCol1 == 0 && nCol2 == rSrcDoc.MaxCol()) || (nRow1 == 0 && nRow2 == rSrcDoc.MaxRow())) { if ((o3tl::make_unsigned(nDataCol2-nDataCol1+1) < nMatrixColumns) || (o3tl::make_unsigned(nDataRow2-nDataRow1+1) < nMatrixRows)) @@ -1947,8 +1947,8 @@ ScExternalRefCache::TokenRef ScExternalRefManager::getSingleRefToken( if (pTab) *pTab = nTab; - SCCOL nDataCol1 = 0, nDataCol2 = MAXCOL; - SCROW nDataRow1 = 0, nDataRow2 = MAXROW; + SCCOL nDataCol1 = 0, nDataCol2 = pSrcDoc->MaxCol(); + SCROW nDataRow1 = 0, nDataRow2 = pSrcDoc->MaxRow(); bool bData = pSrcDoc->ShrinkToDataArea(nTab, nDataCol1, nDataRow1, nDataCol2, nDataRow2); if (!bData || rCell.Col() < nDataCol1 || nDataCol2 < rCell.Col() || rCell.Row() < nDataRow1 || nDataRow2 < rCell.Row()) { diff --git a/sc/source/ui/inc/tpsort.hxx b/sc/source/ui/inc/tpsort.hxx index 1c59ef1a2f1a..ba87a01231a8 100644 --- a/sc/source/ui/inc/tpsort.hxx +++ b/sc/source/ui/inc/tpsort.hxx @@ -31,10 +31,11 @@ #include "sortkeydlg.hxx" #include <address.hxx> +#include <sheetlimits.hxx> #include <sortparam.hxx> // +1 because one field is reserved for the "- undefined -" entry -#define SC_MAXFIELDS MAXCOLCOUNT+1 +inline SCCOL SC_MAXFIELDS(const ScSheetLimits& rLimits) { return rLimits.GetMaxColCount() + 1; } class ScViewData; diff --git a/sc/source/ui/inc/tpsubt.hxx b/sc/source/ui/inc/tpsubt.hxx index 93652127d026..c4b8fea42322 100644 --- a/sc/source/ui/inc/tpsubt.hxx +++ b/sc/source/ui/inc/tpsubt.hxx @@ -22,9 +22,7 @@ #include <sfx2/tabdlg.hxx> #include <global.hxx> - -// +1 because one field is reserved for the "- none -" entry -#define SC_MAXFIELDS MAXCOLCOUNT+1 +#include <sheetlimits.hxx> class ScViewData; class ScDocument; @@ -51,7 +49,7 @@ protected: const sal_uInt16 nWhichSubTotals; const ScSubTotalParam& rSubTotalData; - SCCOL nFieldArr[SC_MAXFIELDS]; + std::vector<SCCOL> mnFieldArr; sal_uInt16 nFieldCount; std::unique_ptr<weld::ComboBox> mxLbGroup; diff --git a/sc/source/ui/pagedlg/areasdlg.cxx b/sc/source/ui/pagedlg/areasdlg.cxx index 1a3a34cfc9f9..d2639b085a77 100644 --- a/sc/source/ui/pagedlg/areasdlg.cxx +++ b/sc/source/ui/pagedlg/areasdlg.cxx @@ -653,7 +653,8 @@ static bool lcl_CheckOne_XL_R1C1( const ScDocument& rDoc, const OUString& rStr, if (nNum <= 0) return false; - if ((bIsRow && nNum > rDoc.GetSheetLimits().GetMaxRowCount()) || (!bIsRow && nNum > MAXCOLCOUNT)) + if ((bIsRow && nNum > rDoc.GetSheetLimits().GetMaxRowCount()) || + (!bIsRow && nNum > rDoc.GetSheetLimits().GetMaxColCount())) return false; rVal = static_cast<SCCOLROW>(nNum-1); diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx index 004729176c2e..7f1bf63bd548 100644 --- a/sc/source/ui/unoobj/chart2uno.cxx +++ b/sc/source/ui/unoobj/chart2uno.cxx @@ -1061,7 +1061,7 @@ bool lcl_addUpperLeftCornerIfMissing(const ScDocument* pDoc, vector<ScTokenRef>& if (rRefTokens.empty()) return false; - SCCOL nMinCol = MAXCOLCOUNT; + SCCOL nMinCol = pDoc->GetSheetLimits().GetMaxColCount(); SCROW nMinRow = pDoc->GetSheetLimits().GetMaxRowCount(); SCCOL nMaxCol = 0; SCROW nMaxRow = 0; @@ -1207,9 +1207,10 @@ bool lcl_addUpperLeftCornerIfMissing(const ScDocument* pDoc, vector<ScTokenRef>& } } + const auto & rSheetLimits = pDoc->GetSheetLimits(); if (nMinRow >= nMaxRow || nMinCol >= nMaxCol || - nMinRow >= pDoc->GetSheetLimits().GetMaxRowCount() || nMinCol >= MAXCOLCOUNT || - nMaxRow >= pDoc->GetSheetLimits().GetMaxRowCount() || nMaxCol >= MAXCOLCOUNT) + nMinRow >= rSheetLimits.GetMaxRowCount() || nMinCol >= rSheetLimits.GetMaxColCount() || + nMaxRow >= rSheetLimits.GetMaxRowCount() || nMaxCol >= rSheetLimits.GetMaxColCount()) { // Invalid range. Bail out. return false; diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 4374eae1d34c..1769bf007e6e 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -2832,9 +2832,11 @@ void ScTabView::getRowColumnHeaders(const tools::Rectangle& rRectangle, tools::J OString ScTabView::getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden, bool bFiltered, bool bGroups) { + ScDocument& rDoc = aViewData.GetDocument(); + boost::property_tree::ptree aTree; aTree.put("commandName", ".uno:SheetGeometryData"); - aTree.put("maxtiledcolumn", MAXCOL); + aTree.put("maxtiledcolumn", rDoc.MaxCol()); aTree.put("maxtiledrow", MAXTILEDROW); auto getJSONString = [](const boost::property_tree::ptree& rTree) { @@ -2843,8 +2845,6 @@ OString ScTabView::getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, return aStream.str(); }; - ScDocument& rDoc = aViewData.GetDocument(); - if ((!bSizes && !bHidden && !bFiltered && !bGroups) || (!bColumns && !bRows)) { diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index 92452d24f71d..b416928ca30b 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -155,7 +155,7 @@ bool ScViewFunc::AdjustBlockHeight( bool bPaint, ScMarkData* pMarkData ) SCROW nStartNo = rRow.mnStart; SCROW nEndNo = rRow.mnEnd; ScAddress aTopLeft(0, nStartNo, nTab); - rDoc.UpdateScriptTypes(aTopLeft, MAXCOLCOUNT, nEndNo-nStartNo+1); + rDoc.UpdateScriptTypes(aTopLeft, rDoc.GetSheetLimits().GetMaxColCount(), nEndNo-nStartNo+1); if (rDoc.SetOptimalHeight(aCxt, nStartNo, nEndNo, nTab)) { if (!bChanged) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits