sc/inc/table.hxx                      |    2 -
 sc/qa/uitest/autofilter/autofilter.py |   40 +++++++++++++++++++++++++++++++++-
 sc/source/core/data/documen3.cxx      |    2 -
 sc/source/core/data/table3.cxx        |    4 +--
 sc/source/ui/dbgui/filtdlg.cxx        |    7 +----
 uitest/uitest/uihelper/common.py      |    3 ++
 6 files changed, 48 insertions(+), 10 deletions(-)

New commits:
commit f577f4a24e77920b2de19b72666c187abc8c75aa
Author:     Balazs Varga <balazs.varga...@gmail.com>
AuthorDate: Tue May 25 18:23:16 2021 +0200
Commit:     Gabor Kelemen <kelemen.gab...@nisz.hu>
CommitDate: Thu Aug 19 20:31:17 2021 +0200

    tdf#142402 sc UI: store formatted values in standard filter
    
    value list and filter by formatted values later, just like
    we do in the autofilter.
    
    Follow-up to commit 4fd1333ba4bb4f2311e9098291154772bd310429
    "tdf#140968 tdf#140978 XLSX import: fix lost rounded filters".
    
    Change-Id: If26f4c0abd54de05b497861f2c278972bd8072de
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116115
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit 1f755525189884e4b2824889a6b9dea8933402db)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120721
    Tested-by: Gabor Kelemen <kelemen.gab...@nisz.hu>
    Reviewed-by: Gabor Kelemen <kelemen.gab...@nisz.hu>

diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index a2cf2fe81268..561be59701b7 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -950,7 +950,7 @@ public:
     SCSIZE      Query(const ScQueryParam& rQueryParam, bool bKeepSub);
     bool        CreateQueryParam(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW 
nRow2, ScQueryParam& rQueryParam);
 
-    void GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, 
ScFilterEntries& rFilterEntries );
+    void GetFilterEntries(SCCOL nCol, SCROW nRow1, SCROW nRow2, 
ScFilterEntries& rFilterEntries, bool bFiltering = false);
     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);
diff --git a/sc/qa/uitest/autofilter/autofilter.py 
b/sc/qa/uitest/autofilter/autofilter.py
index b45fa0a5196b..76c1244342ff 100644
--- a/sc/qa/uitest/autofilter/autofilter.py
+++ b/sc/qa/uitest/autofilter/autofilter.py
@@ -6,7 +6,7 @@
 #
 
 from uitest.framework import UITestCase
-from uitest.uihelper.common import get_state_as_dict
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file, 
select_by_text
 from libreoffice.uno.propertyvalue import mkPropertyValues
 from libreoffice.calc.document import get_row
 from uitest.uihelper.calc import enter_text_to_cell
@@ -434,4 +434,42 @@ class AutofilterTest(UITestCase):
         self.assertTrue(is_row_hidden(doc, 7))
         self.assertFalse(is_row_hidden(doc, 8))
 
+        self.ui_test.close_doc()
+
+    def test_tdf142402(self):
+        doc = self.ui_test.load_file(get_url_for_data_file("tdf140968.xlsx"))
+
+        xGridWin = self.xUITest.getTopFocusWindow().getChild("grid_window")
+
+        xGridWin.executeAction("LAUNCH", mkPropertyValues({"AUTOFILTER": "", 
"COL": "0", "ROW": "0"}))
+        xFloatWindow = self.xUITest.getFloatWindow()
+        #Choose Standard Filter... button
+        xMenu = xFloatWindow.getChild("menu")
+
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"DOWN"}))
+        xMenu.executeAction("TYPE", mkPropertyValues({"KEYCODE":"RETURN"}))
+
+        xDialog = self.xUITest.getTopFocusWindow()
+        xval1 = xDialog.getChild("val1")
+
+        select_by_text(xval1, "0.365")
+
+        xOKBtn = xDialog.getChild("ok")
+        self.ui_test.close_dialog_through_button(xOKBtn)
+
+        self.assertFalse(is_row_hidden(doc, 0))
+        self.assertFalse(is_row_hidden(doc, 1))
+        self.assertTrue(is_row_hidden(doc, 2))
+        self.assertTrue(is_row_hidden(doc, 3))
+        self.assertTrue(is_row_hidden(doc, 4))
+        self.assertTrue(is_row_hidden(doc, 5))
+        self.assertTrue(is_row_hidden(doc, 6))
+
+        self.ui_test.close_doc()
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index 9d9fcc110ed8..32697751d728 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1601,7 +1601,7 @@ void ScDocument::GetFilterEntriesArea(
 {
     if ( ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && 
maTabs[nTab] )
     {
-        maTabs[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, 
rFilterEntries );
+        maTabs[nTab]->GetFilterEntries( nCol, nStartRow, nEndRow, 
rFilterEntries, true );
         sortAndRemoveDuplicates( rFilterEntries.maStrData, bCaseSens);
     }
 }
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index d94e6bf69703..d1c7b01419aa 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -3509,11 +3509,11 @@ bool ScTable::HasRowHeader( SCCOL nStartCol, SCROW 
nStartRow, SCCOL nEndCol, SCR
     return false;
 }
 
-void ScTable::GetFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, 
ScFilterEntries& rFilterEntries )
+void ScTable::GetFilterEntries( SCCOL nCol, SCROW nRow1, SCROW nRow2, 
ScFilterEntries& rFilterEntries, bool bFiltering )
 {
     sc::ColumnBlockConstPosition aBlockPos;
     aCol[nCol].InitBlockPosition(aBlockPos);
-    aCol[nCol].GetFilterEntries(aBlockPos, nRow1, nRow2, rFilterEntries, 
false);
+    aCol[nCol].GetFilterEntries(aBlockPos, nRow1, nRow2, rFilterEntries, 
bFiltering);
 }
 
 void ScTable::GetFilteredFilterEntries(
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 322c617aa2f9..546a4eab3f34 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -1100,11 +1100,8 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, weld::ComboBox&, 
rEd, void )
     {
         rItem.maString = pDoc->GetSharedStringPool().intern(aStrVal);
         rItem.mfVal = 0.0;
-
-        sal_uInt32 nIndex = 0;
-        bool bNumber = pDoc->GetFormatTable()->IsNumberFormat(
-            rItem.maString.getString(), nIndex, rItem.mfVal);
-        rItem.meType = bNumber ? ScQueryEntry::ByValue : 
ScQueryEntry::ByString;
+        rItem.meType = ScQueryEntry::ByString;
+        rItem.mbFormattedValue = true;
     }
 
     const sal_Int32 nField = pLbField->get_active();
diff --git a/uitest/uitest/uihelper/common.py b/uitest/uitest/uihelper/common.py
index 972452d6de07..32a74b046ab1 100644
--- a/uitest/uitest/uihelper/common.py
+++ b/uitest/uitest/uihelper/common.py
@@ -21,6 +21,9 @@ def select_pos(ui_object, pos):
 def select_text(ui_object, from_pos, to):
     ui_object.executeAction("SELECT", mkPropertyValues({"FROM": from_pos, 
"TO": to}))
 
+def select_by_text(ui_object, text):
+     ui_object.executeAction("SELECT", mkPropertyValues({"TEXT": text}))
+
 def get_url_for_data_file(file_name):
     return 
pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()
 

Reply via email to