summaryrefslogtreecommitdiff
path: root/sc/source/core/data/documen3.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core/data/documen3.cxx')
-rw-r--r--sc/source/core/data/documen3.cxx24
1 files changed, 22 insertions, 2 deletions
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index 783bac66f2fd..3a588b81fab7 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1578,6 +1578,27 @@ void ScDocument::GetFilterEntriesArea(
}
/**
+ * Get entries for computing auto-complete entries in input handler (no numbers/formulas)
+ */
+void ScDocument::GetStringBlockEntries(
+ SCCOL nCursorCol, SCROW nCursorRow, SCTAB nTab,
+ std::vector<ScTypedStrData>& rStrings) const
+{
+ if (!ValidTab(nTab) || nTab >= static_cast<SCTAB>(maTabs.size()))
+ return;
+
+ if (!maTabs[nTab])
+ return;
+
+ std::set<ScTypedStrData> aStrings;
+ if (maTabs[nTab]->GetStringBlockEntries(nCursorCol, nCursorRow, aStrings))
+ {
+ rStrings.insert(rStrings.end(), aStrings.begin(), aStrings.end());
+ sortAndRemoveDuplicates(rStrings, true/*bCaseSens*/);
+ }
+}
+
+/**
* Entries for selection list listbox (no numbers/formulas)
*/
void ScDocument::GetDataEntries(
@@ -1587,8 +1608,7 @@ void ScDocument::GetDataEntries(
if( !bLimit )
{
/* 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
- cell values for auto completion on input. */
+ if bLimit==true. */
sal_uInt32 nValidation = GetAttr( nCol, nRow, nTab, ATTR_VALIDDATA )->GetValue();
if( nValidation )
{