sc/qa/uitest/autofilter/autofilterBugs.py |   48 ++++++++++++++++++++++++++++++
 sc/source/core/tool/typedstrdata.cxx      |    7 +---
 2 files changed, 51 insertions(+), 4 deletions(-)

New commits:
commit 2e887e04c0008a4eb6cbf34050b6fa463a33599f
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Fri Oct 7 11:59:33 2022 +0200
Commit:     Eike Rathke <er...@redhat.com>
CommitDate: Thu Oct 13 12:28:14 2022 +0200

    tdf#125363, tdf#123095 - Use CaseTransliteration for autofilter
    
    Change-Id: Ib6f1edebe26a69d3316a901e00d2bc6e0c66695f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141047
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <er...@redhat.com>

diff --git a/sc/qa/uitest/autofilter/autofilterBugs.py 
b/sc/qa/uitest/autofilter/autofilterBugs.py
index 1a9d2261d631..a295c6307793 100644
--- a/sc/qa/uitest/autofilter/autofilterBugs.py
+++ b/sc/qa/uitest/autofilter/autofilterBugs.py
@@ -25,6 +25,54 @@ class autofilter(UITestCase):
             #autofilter still exist
             
self.assertEqual(calc_doc.getPropertyValue("UnnamedDatabaseRanges").getByTable(0).AutoFilter,
 True)
 
+   def test_tdf123095(self):
+        with self.ui_test.create_doc_in_start_center("calc") as document:
+            calcDoc = self.xUITest.getTopFocusWindow()
+            xGridWindow = calcDoc.getChild("grid_window")
+            enter_text_to_cell(xGridWindow, "A1", "乙二醇(进口料件)")
+            enter_text_to_cell(xGridWindow, "A2", "乙二醇(进口料件)")
+            xGridWindow.executeAction("SELECT", mkPropertyValues({"RANGE": 
"A1:A2"}))
+
+            with 
self.ui_test.execute_dialog_through_command(".uno:DataFilterAutoFilter", 
close_button="no"):
+                pass
+
+            xGridWindow.executeAction("LAUNCH", 
mkPropertyValues({"AUTOFILTER": "", "COL": "0", "ROW": "0"}))
+            xFloatWindow = self.xUITest.getFloatWindow()
+            xTreeList = xFloatWindow.getChild("check_list_box")
+
+            # Without the fix in place, the second entry would not exist
+            self.assertEqual(2, len(xTreeList.getChildren()))
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("0"))["Text"], 
"乙二醇(进口料件)")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("1"))["Text"], 
"乙二醇(进口料件)")
+
+   def test_tdf125363(self):
+        with self.ui_test.create_doc_in_start_center("calc") as document:
+            calcDoc = self.xUITest.getTopFocusWindow()
+            xGridWindow = calcDoc.getChild("grid_window")
+            enter_text_to_cell(xGridWindow, "A1", "guet")
+            enter_text_to_cell(xGridWindow, "A2", "guͤt")
+            enter_text_to_cell(xGridWindow, "A3", "tuon")
+            enter_text_to_cell(xGridWindow, "A4", "tuͦn")
+            enter_text_to_cell(xGridWindow, "A5", "vröude")
+            enter_text_to_cell(xGridWindow, "A6", "vröudᵉ")
+            xGridWindow.executeAction("SELECT", mkPropertyValues({"RANGE": 
"A1:A6"}))
+
+            with 
self.ui_test.execute_dialog_through_command(".uno:DataFilterAutoFilter", 
close_button="no"):
+                pass
+
+            xGridWindow.executeAction("LAUNCH", 
mkPropertyValues({"AUTOFILTER": "", "COL": "0", "ROW": "0"}))
+            xFloatWindow = self.xUITest.getFloatWindow()
+            xTreeList = xFloatWindow.getChild("check_list_box")
+
+            # Without the fix in place, the entries with superscript/modifier 
letters would not exist
+            self.assertEqual(6, len(xTreeList.getChildren()))
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("0"))["Text"], "guet")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("1"))["Text"], "guͤt")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("2"))["Text"], "tuon")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("3"))["Text"], "tuͦn")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("4"))["Text"], "vröude")
+            
self.assertEqual(get_state_as_dict(xTreeList.getChild("5"))["Text"], "vröudᵉ")
+
    def test_tdf94055(self):
         with self.ui_test.create_doc_in_start_center("calc") as document:
             calcDoc = self.xUITest.getTopFocusWindow()
diff --git a/sc/source/core/tool/typedstrdata.cxx 
b/sc/source/core/tool/typedstrdata.cxx
index bf659733366a..e00c1bc18d91 100644
--- a/sc/source/core/tool/typedstrdata.cxx
+++ b/sc/source/core/tool/typedstrdata.cxx
@@ -11,6 +11,7 @@
 #include <global.hxx>
 
 #include <unotools/collatorwrapper.hxx>
+#include <unotools/transliterationwrapper.hxx>
 #include <utility>
 
 bool ScTypedStrData::LessHiddenRows::operator() (const ScTypedStrData& left, 
const ScTypedStrData& right) const
@@ -77,8 +78,7 @@ bool ScTypedStrData::EqualCaseSensitive::operator() (const 
ScTypedStrData& left,
     if (left.mbIsDate != right.mbIsDate )
         return false;
 
-    return ScGlobal::GetCaseCollator().compareString(
-        left.maStrValue, right.maStrValue) == 0;
+    return ScGlobal::GetCaseTransliteration().isEqual(left.maStrValue, 
right.maStrValue);
 }
 
 bool ScTypedStrData::EqualCaseInsensitive::operator() (const ScTypedStrData& 
left, const ScTypedStrData& right) const
@@ -92,8 +92,7 @@ bool ScTypedStrData::EqualCaseInsensitive::operator() (const 
ScTypedStrData& lef
     if (left.mbIsDate != right.mbIsDate )
         return false;
 
-    return ScGlobal::GetCollator().compareString(
-        left.maStrValue, right.maStrValue) == 0;
+    return ScGlobal::GetTransliteration().isEqual(left.maStrValue, 
right.maStrValue);
 }
 
 bool ScTypedStrData::operator< (const ScTypedStrData& r) const

Reply via email to