sc/inc/sheetlimits.hxx | 2 + sc/source/ui/navipi/navipi.cxx | 42 +++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 18 deletions(-)
New commits: commit 722aa442977e5ca27ab05b4299d26346b5a4e883 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Sep 9 21:26:47 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Thu Sep 10 08:22:13 2020 +0200 convert some MAXCOL to use ScSheetLimits part of the jumbo-sheet work Change-Id: Idbde4f56543a35e2f9f784ebaa0a40608610688b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102336 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sc/inc/sheetlimits.hxx b/sc/inc/sheetlimits.hxx index 60b6f86ea424..31df9d43793b 100644 --- a/sc/inc/sheetlimits.hxx +++ b/sc/inc/sheetlimits.hxx @@ -59,6 +59,8 @@ struct ScSheetLimits final : public salhelper::SimpleReferenceObject // equivalent of MAXROWCOUNT in address.hxx SCROW GetMaxRowCount() const { return mnMaxRow + 1; } + // equivalent of MAXCOLCOUNT in address.hxx + SCCOL GetMaxColCount() const { return mnMaxCol + 1; } }; #endif diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx index 1074fa8eff08..8ad1fec19f1b 100644 --- a/sc/source/ui/navipi/navipi.cxx +++ b/sc/source/ui/navipi/navipi.cxx @@ -47,11 +47,17 @@ using namespace com::sun::star; // maximum values for UI -#define SCNAV_MAXCOL (MAXCOLCOUNT) +static SCCOL SCNAV_MAXCOL(const ScSheetLimits& rLimits) { return rLimits.GetMaxColCount(); } // macro is sufficient since only used in ctor -#define SCNAV_COLDIGITS (static_cast<sal_Int32>( floor( log10( static_cast<double>(SCNAV_MAXCOL)))) + 1) // 1...256...18278 +static sal_Int32 SCNAV_COLDIGITS(const ScSheetLimits& rLimits) +{ + return static_cast<sal_Int32>( floor( log10( static_cast<double>(SCNAV_MAXCOL(rLimits)))) ) + 1; // 1...256...18278 +} // precomputed constant because it is used in every change of spin button field -const sal_Int32 SCNAV_COLLETTERS = ::ScColToAlpha(SCNAV_MAXCOL).getLength(); // A...IV...ZZZ +static sal_Int32 SCNAV_COLLETTERS(const ScSheetLimits& rLimits) +{ + return ::ScColToAlpha(SCNAV_MAXCOL(rLimits)).getLength(); // A...IV...ZZZ +} static SCROW SCNAV_MAXROW(const ScSheetLimits& rSheetLimits) { @@ -72,10 +78,10 @@ void ScNavigatorDlg::ReleaseFocus() namespace { - SCCOL NumToAlpha(SCCOL nColNo, OUString& rStr) + SCCOL NumToAlpha(const ScSheetLimits& rSheetLimits, SCCOL nColNo, OUString& rStr) { - if ( nColNo > SCNAV_MAXCOL ) - nColNo = SCNAV_MAXCOL; + if ( nColNo > SCNAV_MAXCOL(rSheetLimits) ) + nColNo = SCNAV_MAXCOL(rSheetLimits); else if ( nColNo < 1 ) nColNo = 1; @@ -95,10 +101,11 @@ namespace if (::AlphaToCol( rDoc, nColumn, rStr)) ++nColumn; - if ( (rStr.getLength() > SCNAV_COLLETTERS) || (nColumn > SCNAV_MAXCOL) ) + if ( (rStr.getLength() > SCNAV_COLLETTERS(rDoc.GetSheetLimits())) || + (nColumn > SCNAV_MAXCOL(rDoc.GetSheetLimits())) ) { - nColumn = SCNAV_MAXCOL; - NumToAlpha( nColumn, rStr ); + nColumn = SCNAV_MAXCOL(rDoc.GetSheetLimits()); + NumToAlpha( rDoc.GetSheetLimits(), nColumn, rStr ); } } else @@ -107,12 +114,12 @@ namespace return nColumn; } - SCCOL NumStrToAlpha(OUString& rStr) + SCCOL NumStrToAlpha(const ScSheetLimits& rSheetLimits, OUString& rStr) { SCCOL nColumn = 0; if ( CharClass::isAsciiNumeric(rStr) ) - nColumn = NumToAlpha( static_cast<SCCOL>(rStr.toInt32()), rStr ); + nColumn = NumToAlpha( rSheetLimits, static_cast<SCCOL>(rStr.toInt32()), rStr ); else rStr.clear(); @@ -130,13 +137,12 @@ IMPL_LINK(ScNavigatorDlg, ParseRowInputHdl, int*, result, bool) { // nKeyGroup is no longer set at VCL, in cause of lack of keyinput + ScTabViewShell* pViewSh = dynamic_cast<ScTabViewShell*>( SfxViewShell::Current() ); + auto& rDoc = *pViewSh->GetViewData().GetDocument(); if ( CharClass::isAsciiNumeric(aStrCol) ) - nCol = NumStrToAlpha( aStrCol ); + nCol = NumStrToAlpha( rDoc.GetSheetLimits(), aStrCol ); else - { - ScTabViewShell* pViewSh = dynamic_cast<ScTabViewShell*>( SfxViewShell::Current() ); - nCol = AlphaToNum( *pViewSh->GetViewData().GetDocument(), aStrCol ); - } + nCol = AlphaToNum( rDoc, aStrCol ); } else nCol = 0; @@ -349,8 +355,8 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent) //max rows is 1,000,000, which is too long for typical use m_xEdRow->connect_activate(LINK(this, ScNavigatorDlg, ExecuteRowHdl)); - m_xEdCol->set_range(1, SCNAV_MAXCOL); - m_xEdCol->set_width_chars(SCNAV_COLDIGITS); // 1...256...18278 or A...IV...ZZZ + m_xEdCol->set_range(1, SCNAV_MAXCOL(pDoc->GetSheetLimits())); + m_xEdCol->set_width_chars(SCNAV_COLDIGITS(pDoc->GetSheetLimits())); // 1...256...18278 or A...IV...ZZZ m_xEdCol->connect_activate(LINK(this, ScNavigatorDlg, ExecuteColHdl)); m_xEdCol->connect_output(LINK(this, ScNavigatorDlg, FormatRowOutputHdl)); m_xEdCol->connect_input(LINK(this, ScNavigatorDlg, ParseRowInputHdl)); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits