sc/inc/column.hxx | 2 - sc/inc/document.hxx | 2 - sc/inc/table.hxx | 2 - sc/source/core/data/column3.cxx | 54 ++++++++++++--------------------------- sc/source/core/data/documen3.cxx | 8 ++--- sc/source/core/data/table3.cxx | 4 +- sc/source/ui/app/inputhdl.cxx | 2 - sc/source/ui/view/gridwin.cxx | 2 - 8 files changed, 28 insertions(+), 48 deletions(-)
New commits: commit 34a459791a734cd4a551ed7fcfd4e40dfd6b8508 Author: Dennis Francis <dennis.fran...@collabora.com> AuthorDate: Mon May 10 17:56:34 2021 +0530 Commit: Dennis Francis <dennis.fran...@collabora.com> CommitDate: Tue May 25 20:40:53 2021 +0200 tdf#142214: autoinput: remove search/entry count limits Change-Id: Ib41f7c04b9a3802982105cbbfef3ae638bdb286f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115345 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Dennis Francis <dennis.fran...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115545 Tested-by: Jenkins (cherry picked from commit ebff4e5181b102e5184277f57fda32fcce60431f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116085 diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 3adca3745ec0..d369f84de36c 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -537,7 +537,7 @@ public: sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow, ScFilterEntries& rFilterEntries ); - bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings, bool bLimit ) const; + bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings) const; void UpdateInsertTabAbs(SCTAB nNewPos); bool TestTabRefAbs(SCTAB nTable) const; diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 02f0aa163f3b..210811968e97 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -2080,7 +2080,7 @@ public: ScFilterEntries& rFilterEntries ); void GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, - std::vector<ScTypedStrData>& rStrings, bool bLimit = false ); + std::vector<ScTypedStrData>& rStrings, bool bValidation = false ); void GetFormulaEntries( ScTypedCaseStrSet& rStrings ); bool HasAutoFilter( SCCOL nCol, SCROW nRow, SCTAB nTab ); diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 309d49d4f140..09e71f139466 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -952,7 +952,7 @@ public: void GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, ScFilterEntries& rFilterEntries ); void GetFilteredFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, const ScQueryParam& rParam, ScFilterEntries& rFilterEntries ); [[nodiscard]] - bool GetDataEntries(SCCOL nCol, SCROW nRow, std::set<ScTypedStrData>& rStrings, bool bLimit); + bool GetDataEntries(SCCOL nCol, SCROW nRow, std::set<ScTypedStrData>& rStrings); bool HasColHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow ) const; bool HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow ) const; diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 42acb311312c..41ae6a3d1931 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -2674,14 +2674,8 @@ public: } // GetDataEntries - Strings from continuous Section around nRow - -// DATENT_MAX - max. number of entries in list for auto entry -// DATENT_SEARCH - max. number of cells that get transparent - new: only count Strings -#define DATENT_MAX 200 -#define DATENT_SEARCH 2000 - bool ScColumn::GetDataEntries( - SCROW nStartRow, std::set<ScTypedStrData>& rStrings, bool bLimit ) const + SCROW nStartRow, std::set<ScTypedStrData>& rStrings) const { // Start at the specified row position, and collect all string values // going upward and downward directions in parallel. The start position @@ -2699,44 +2693,30 @@ bool ScColumn::GetDataEntries( bMoveDown = aItrDown.next(); // Find the next string cell position. bool bFound = false; - size_t nCellsSearched = 0; - while (bMoveUp || bMoveDown) + while (bMoveUp) { - if (bMoveUp) + // Get the current string and move up. + OUString aStr = aItrUp.get(); + if (!aStr.isEmpty()) { - // Get the current string and move up. - OUString aStr = aItrUp.get(); - if (!aStr.isEmpty()) - { - bool bInserted = rStrings.insert(ScTypedStrData(aStr)).second; - if (bInserted && bLimit && rStrings.size() >= DATENT_MAX) - return true; // Maximum reached + if (rStrings.insert(ScTypedStrData(aStr)).second) bFound = true; - } - - if (bLimit && ++nCellsSearched >= DATENT_SEARCH) - return bFound; // max search cell count reached. - - bMoveUp = aItrUp.prev(); } - if (bMoveDown) + bMoveUp = aItrUp.prev(); + } + + while (bMoveDown) + { + // Get the current string and move down. + OUString aStr = aItrDown.get(); + if (!aStr.isEmpty()) { - // Get the current string and move down. - OUString aStr = aItrDown.get(); - if (!aStr.isEmpty()) - { - bool bInserted = rStrings.insert(ScTypedStrData(aStr)).second; - if (bInserted && bLimit && rStrings.size() >= DATENT_MAX) - return true; // Maximum reached + if (rStrings.insert(ScTypedStrData(aStr)).second) bFound = true; - } - - if (bLimit && ++nCellsSearched >= DATENT_SEARCH) - return bFound; // max search cell count reached. - - bMoveDown = aItrDown.next(); } + + bMoveDown = aItrDown.next(); } return bFound; diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index aa3eb825ee45..ed529df20a63 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -1600,12 +1600,12 @@ void ScDocument::GetFilterEntriesArea( */ void ScDocument::GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab, - std::vector<ScTypedStrData>& rStrings, bool bLimit ) + std::vector<ScTypedStrData>& rStrings, bool bValidation ) { - if( !bLimit ) + if( bValidation ) { /* Try to generate the list from list validation. This part is skipped, - if bLimit==true, because in that case this function is called to get + if bValidation==false, because in that case this function is called to get cell values for auto completion on input. */ sal_uInt32 nValidation = GetAttr( nCol, nRow, nTab, ATTR_VALIDDATA )->GetValue(); if( nValidation ) @@ -1628,7 +1628,7 @@ void ScDocument::GetDataEntries( return; std::set<ScTypedStrData> aStrings; - if (maTabs[nTab]->GetDataEntries(nCol, nRow, aStrings, bLimit)) + if (maTabs[nTab]->GetDataEntries(nCol, nRow, aStrings)) { rStrings.insert(rStrings.end(), aStrings.begin(), aStrings.end()); sortAndRemoveDuplicates(rStrings, true/*bCaseSens*/); diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index b4967a9a31dd..17d28013a680 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -3516,9 +3516,9 @@ void ScTable::GetFilteredFilterEntries( } } -bool ScTable::GetDataEntries(SCCOL nCol, SCROW nRow, std::set<ScTypedStrData>& rStrings, bool bLimit) +bool ScTable::GetDataEntries(SCCOL nCol, SCROW nRow, std::set<ScTypedStrData>& rStrings) { - return aCol[nCol].GetDataEntries( nRow, rStrings, bLimit ); + return aCol[nCol].GetDataEntries( nRow, rStrings); } sal_uLong ScTable::GetCellCount() const diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index e2d0da10537e..dfcc5347bd22 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -1943,7 +1943,7 @@ void ScInputHandler::GetColData() std::vector<ScTypedStrData> aEntries; rDoc.GetDataEntries( - aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), aEntries, true); + aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), aEntries); if (!aEntries.empty()) pColumnData->insert(aEntries.begin(), aEntries.end()); diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 6f12a291d5d6..8715a29673f1 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -1133,7 +1133,7 @@ void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow ) bool bEmpty = false; std::vector<ScTypedStrData> aStrings; // case sensitive // Fill List - rDoc.GetDataEntries(nCol, nRow, nTab, aStrings); + rDoc.GetDataEntries(nCol, nRow, nTab, aStrings, true /* bValidation */); if (aStrings.empty()) bEmpty = true; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits