[Libreoffice-commits] core.git: sc/inc sc/source
Dennis Francis (via logerrit)
logerrit at kemper.freedesktop.org
Thu May 13 14:25:31 UTC 2021
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 ebff4e5181b102e5184277f57fda32fcce60431f
Author: Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Mon May 10 17:56:34 2021 +0530
Commit: Dennis Francis <dennis.francis at collabora.com>
CommitDate: Thu May 13 16:24:45 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 <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Dennis Francis <dennis.francis at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115545
Tested-by: Jenkins
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 56791cfd5f61..197dc17d4134 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -541,7 +541,7 @@ public:
sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow,
ScFilterEntries& rFilterEntries, bool bFiltering );
- 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 f90e74e9c030..d314ea660cd6 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -2089,7 +2089,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 416cbb5d9337..2436b0ccac87 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -961,7 +961,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, bool bFiltering );
[[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 51bc475d135f..de6870a6a9c9 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -2697,14 +2697,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
@@ -2722,44 +2716,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 b47c03c0e6fe..8de06d151d78 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1616,12 +1616,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 )
@@ -1644,7 +1644,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 54c0850931ee..552abe5b0370 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -3570,9 +3570,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 3082cdb83455..2ef4df79dc4e 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -1941,7 +1941,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 c6c1f5250bf3..92b3e31d75fe 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1166,7 +1166,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;
More information about the Libreoffice-commits
mailing list