diff options
author | Tünde Tóth <toth.tunde@nisz.hu> | 2021-05-31 11:09:35 +0200 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2021-06-01 13:03:26 +0200 |
commit | 361b95b39c0ad3028f82b9893bb3c84dcbd1932f (patch) | |
tree | fdf28ed0d05f80195e453f21617cf240d1430aa5 /sc | |
parent | 25a648541a423b794b5827552e03fba1084b3792 (diff) |
tdf#140745 sc AutoFilter: fix placing of "(empty)"
Show entry "(empty)" on top of the checkbox list
in the Autofilter dropdown (instead of between the
numerical and string values).
Change-Id: I5b6d339d07b886bd52d24c7d900b53c6f921c2ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116439
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/uitest/autofilter/autofilter.py | 13 | ||||
-rw-r--r-- | sc/qa/uitest/autofilter/autofilterBugs.py | 18 | ||||
-rw-r--r-- | sc/qa/uitest/autofilter/tdf68113.py | 8 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 29 |
4 files changed, 42 insertions, 26 deletions
diff --git a/sc/qa/uitest/autofilter/autofilter.py b/sc/qa/uitest/autofilter/autofilter.py index 70c6b3c3b89d..060ada717844 100644 --- a/sc/qa/uitest/autofilter/autofilter.py +++ b/sc/qa/uitest/autofilter/autofilter.py @@ -409,7 +409,14 @@ class AutofilterTest(UITestCase): xFloatWindow = self.xUITest.getFloatWindow() xCheckListMenu = xFloatWindow.getChild("check_list_menu") xList = xCheckListMenu.getChild("check_list_box") - xEntry = xList.getChild("2") + + # tdf140745 show (empty) entry on top of the checkbox list + self.assertEqual(3, len(xList.getChildren())) + self.assertEqual("(empty)", get_state_as_dict(xList.getChild('0'))['Text']) + self.assertEqual("0", get_state_as_dict(xList.getChild('1'))['Text']) + self.assertEqual("1", get_state_as_dict(xList.getChild('2'))['Text']) + + xEntry = xList.getChild("0") xEntry.executeAction("CLICK", tuple()) xOkButton = xFloatWindow.getChild("ok") @@ -424,9 +431,9 @@ class AutofilterTest(UITestCase): xCheckListMenu = xFloatWindow.getChild("check_list_menu") xList = xCheckListMenu.getChild("check_list_box") self.assertEqual(3, len(xList.getChildren())) - self.assertEqual('true', get_state_as_dict(xList.getChild('0'))['IsChecked']) + self.assertEqual('false', get_state_as_dict(xList.getChild('0'))['IsChecked']) self.assertEqual('true', get_state_as_dict(xList.getChild('1'))['IsChecked']) - self.assertEqual('false', get_state_as_dict(xList.getChild('2'))['IsChecked']) + self.assertEqual('true', get_state_as_dict(xList.getChild('2'))['IsChecked']) xCloseButton = xFloatWindow.getChild("cancel") xCloseButton.executeAction("CLICK", tuple()) diff --git a/sc/qa/uitest/autofilter/autofilterBugs.py b/sc/qa/uitest/autofilter/autofilterBugs.py index 9eb45d83a3a0..fabde9aabce9 100644 --- a/sc/qa/uitest/autofilter/autofilterBugs.py +++ b/sc/qa/uitest/autofilter/autofilterBugs.py @@ -220,15 +220,15 @@ class autofilter(UITestCase): x8Entry = xTreeList.getChild("7") x9Entry = xTreeList.getChild("8") - self.assertEqual(get_state_as_dict(x1Entry)["Text"], "0") - self.assertEqual(get_state_as_dict(x2Entry)["Text"], "0.1") - self.assertEqual(get_state_as_dict(x3Entry)["Text"], "0.2") - self.assertEqual(get_state_as_dict(x4Entry)["Text"], "0.3") - self.assertEqual(get_state_as_dict(x5Entry)["Text"], "0.5") - self.assertEqual(get_state_as_dict(x6Entry)["Text"], "0.8") - self.assertEqual(get_state_as_dict(x7Entry)["Text"], "0.9") - self.assertEqual(get_state_as_dict(x8Entry)["Text"], "1") - self.assertEqual(get_state_as_dict(x9Entry)["Text"], "(empty)") + self.assertEqual(get_state_as_dict(x1Entry)["Text"], "(empty)") + self.assertEqual(get_state_as_dict(x2Entry)["Text"], "0") + self.assertEqual(get_state_as_dict(x3Entry)["Text"], "0.1") + self.assertEqual(get_state_as_dict(x4Entry)["Text"], "0.2") + self.assertEqual(get_state_as_dict(x5Entry)["Text"], "0.3") + self.assertEqual(get_state_as_dict(x6Entry)["Text"], "0.5") + self.assertEqual(get_state_as_dict(x7Entry)["Text"], "0.8") + self.assertEqual(get_state_as_dict(x8Entry)["Text"], "0.9") + self.assertEqual(get_state_as_dict(x9Entry)["Text"], "1") self.assertEqual(get_state_as_dict(xTreeList)["Children"], "9") xCancel = xFloatWindow.getChild("cancel") diff --git a/sc/qa/uitest/autofilter/tdf68113.py b/sc/qa/uitest/autofilter/tdf68113.py index dd211665f614..f62ac9ce95c0 100644 --- a/sc/qa/uitest/autofilter/tdf68113.py +++ b/sc/qa/uitest/autofilter/tdf68113.py @@ -44,9 +44,9 @@ class tdf68113(UITestCase): xCheckListMenu = xFloatWindow.getChild("check_list_menu") xTreeList = xCheckListMenu.getChild("check_list_box") self.assertEqual(5, len(xTreeList.getChildren())) - self.assertEqual('false', get_state_as_dict(xTreeList.getChild('0'))['IsChecked']) + self.assertEqual('true', get_state_as_dict(xTreeList.getChild('0'))['IsChecked']) self.assertEqual('false', get_state_as_dict(xTreeList.getChild('2'))['IsChecked']) - self.assertEqual('true', get_state_as_dict(xTreeList.getChild('4'))['IsChecked']) + self.assertEqual('false', get_state_as_dict(xTreeList.getChild('4'))['IsChecked']) xCancelBtn = xFloatWindow.getChild("cancel") xCancelBtn.executeAction("CLICK", tuple()) @@ -66,9 +66,9 @@ class tdf68113(UITestCase): xCheckListMenu = xFloatWindow.getChild("check_list_menu") xTreeList = xCheckListMenu.getChild("check_list_box") self.assertEqual(5, len(xTreeList.getChildren())) - self.assertEqual('true', get_state_as_dict(xTreeList.getChild('0'))['IsChecked']) + self.assertEqual('false', get_state_as_dict(xTreeList.getChild('0'))['IsChecked']) self.assertEqual('true', get_state_as_dict(xTreeList.getChild('2'))['IsChecked']) - self.assertEqual('false', get_state_as_dict(xTreeList.getChild('4'))['IsChecked']) + self.assertEqual('true', get_state_as_dict(xTreeList.getChild('4'))['IsChecked']) xCancelBtn = xFloatWindow.getChild("cancel") xCancelBtn.executeAction("CLICK", tuple()) diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index ca1dd4df1587..bc4d1006325e 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -683,22 +683,31 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow) // Populate the check box list. rControl.setMemberSize(aFilterEntries.size()); + for (auto it = aFilterEntries.begin(); it != aFilterEntries.end(); ++it) + { + // tdf#140745 show (empty) entry on top of the checkbox list + if (it->GetString().isEmpty()) + { + const OUString& aStringVal = it->GetString(); + const double aDoubleVal = it->GetValue(); + bool bSelected = true; + if (!aSelectedValue.empty() || !aSelectedString.empty()) + bSelected = aSelectedString.count(aStringVal) > 0; + else if (bQueryByNonEmpty) + bSelected = false; + rControl.addMember(aStringVal, aDoubleVal, bSelected, false, it->IsDuplicated()); + aFilterEntries.maStrData.erase(it); + break; + } + } for (const auto& rEntry : aFilterEntries) { const OUString& aStringVal = rEntry.GetString(); const double aDoubleVal = rEntry.GetValue(); bool bSelected = true; if (!aSelectedValue.empty() || !aSelectedString.empty()) - { - if (aStringVal.isEmpty()) - bSelected = aSelectedString.count(aStringVal) > 0; - else - bSelected - = aSelectedValue.count(aDoubleVal) > 0 || aSelectedString.count(aStringVal) > 0; - } - else if (bQueryByNonEmpty) - bSelected = !aStringVal.isEmpty(); - + bSelected + = aSelectedValue.count(aDoubleVal) > 0 || aSelectedString.count(aStringVal) > 0; if ( rEntry.IsDate() ) rControl.addDateMember( aStringVal, rEntry.GetValue(), bSelected ); else |