diff options
author | Serge Krot <Serge.Krot@cib.de> | 2019-01-28 11:02:37 +0100 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2019-01-30 20:26:02 +0100 |
commit | fb3c3216ba1a6fc978176eebcef0cab4599a39e7 (patch) | |
tree | 10c7b303eba6dc44f72ac0941d27178418f7730f /sc | |
parent | b4d3f37ee0a7fd9b16eefa5f694fd2dff8a538fa (diff) |
tdf#122260 sc: Autofilters not properly cleared
Change-Id: I301b9ae8640e93b1ecf9e6818c9792ce45993cba
Reviewed-on: https://gerrit.libreoffice.org/67001
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/uitest/autofilter/data/tdf122260.ods | bin | 0 -> 9251 bytes | |||
-rw-r--r-- | sc/qa/uitest/autofilter/tdf117276.py | 2 | ||||
-rw-r--r-- | sc/qa/uitest/autofilter/tdf122260.py | 102 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 1 |
4 files changed, 104 insertions, 1 deletions
diff --git a/sc/qa/uitest/autofilter/data/tdf122260.ods b/sc/qa/uitest/autofilter/data/tdf122260.ods Binary files differnew file mode 100644 index 000000000000..00c86d00a398 --- /dev/null +++ b/sc/qa/uitest/autofilter/data/tdf122260.ods diff --git a/sc/qa/uitest/autofilter/tdf117276.py b/sc/qa/uitest/autofilter/tdf117276.py index c5129e145b9b..acd7d11899b5 100644 --- a/sc/qa/uitest/autofilter/tdf117276.py +++ b/sc/qa/uitest/autofilter/tdf117276.py @@ -101,7 +101,7 @@ class tdf117276(UITestCase): xCheckListMenu = xFloatWindow.getChild("check_list_menu") xTreeList = xCheckListMenu.getChild("check_list_box") - x8000Entry = xTreeList.getChild("0") + x8000Entry = xTreeList.getChild("1") # check "8000" x8000Entry.executeAction("CLICK", tuple()) xOkBtn = xFloatWindow.getChild("ok") diff --git a/sc/qa/uitest/autofilter/tdf122260.py b/sc/qa/uitest/autofilter/tdf122260.py new file mode 100644 index 000000000000..7d9df8564ab7 --- /dev/null +++ b/sc/qa/uitest/autofilter/tdf122260.py @@ -0,0 +1,102 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict +from uitest.uihelper.common import select_pos +from uitest.uihelper.calc import enter_text_to_cell +from libreoffice.calc.document import get_sheet_from_doc +from libreoffice.calc.conditional_format import get_conditional_format_from_sheet +from libreoffice.calc.document import get_cell_by_position +from libreoffice.uno.propertyvalue import mkPropertyValues +from libreoffice.calc.document import get_row + + +from uitest.path import get_srcdir_url +def get_url_for_data_file(file_name): + return get_srcdir_url() + "/sc/qa/uitest/autofilter/data/" + file_name + +def is_row_hidden(doc, index): + row = get_row(doc, index) + val = row.getPropertyValue("IsVisible") + return not val + +#Bug 122260 - EDITING Autofilters not properly cleared +class tdf122260(UITestCase): + def check_value_in_AutoFilter(self, gridwin, columnIndex, valueIndex): + # open filter pop-up window + self.assertIsNotNone(gridwin) + gridwin.executeAction("LAUNCH", mkPropertyValues({"AUTOFILTER": "", "COL": columnIndex, "ROW": "0"})) + xFloatWindow = self.xUITest.getFloatWindow() + self.assertIsNotNone(xFloatWindow) + + # get check list + xCheckListMenu = xFloatWindow.getChild("check_list_menu") + self.assertIsNotNone(xCheckListMenu) + + xTreeList = xCheckListMenu.getChild("check_list_box") + self.assertIsNotNone(xTreeList) + + # on/off required checkbox + xEntry = xTreeList.getChild(valueIndex) + self.assertIsNotNone(xEntry) + xEntry.executeAction("CLICK", tuple()) + + # close pop-up window + xOkBtn = xFloatWindow.getChild("ok") + self.assertIsNotNone(xOkBtn) + xOkBtn.executeAction("CLICK", tuple()) + + def get_values_count_in_AutoFilter(self, gridwin, columnIndex): + # open filter pop-up window + self.assertIsNotNone(gridwin) + gridwin.executeAction("LAUNCH", mkPropertyValues({"AUTOFILTER": "", "COL": columnIndex, "ROW": "0"})) + xFloatWindow = self.xUITest.getFloatWindow() + self.assertIsNotNone(xFloatWindow) + + # get check list + xCheckListMenu = xFloatWindow.getChild("check_list_menu") + self.assertIsNotNone(xCheckListMenu) + + xTreeList = xCheckListMenu.getChild("check_list_box") + self.assertIsNotNone(xTreeList) + + valuesCount = len(xTreeList.getChildren()) + + # close pop-up window + xOkBtn = xFloatWindow.getChild("ok") + self.assertIsNotNone(xOkBtn) + xOkBtn.executeAction("CLICK", tuple()) + + return valuesCount + + def test_tdf122260_autofilter(self): + calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf122260.ods")) + xCalcDoc = self.xUITest.getTopFocusWindow() + gridwin = xCalcDoc.getChild("grid_window") + self.assertIsNotNone(gridwin) + + # filter out b1 + self.check_value_in_AutoFilter(gridwin, "1", "0") + # filter out a2 (as a1 is filtered out a2 is the first item) + self.check_value_in_AutoFilter(gridwin, "0", "0") + # return back a2 (as a1 is filtered out a2 is the first item) + self.check_value_in_AutoFilter(gridwin, "0", "0") + + # check rows visibility + # row-0 is row with headers + self.assertTrue(is_row_hidden(calc_doc, 1)) + self.assertFalse(is_row_hidden(calc_doc, 2)) + self.assertFalse(is_row_hidden(calc_doc, 3)) + self.assertFalse(is_row_hidden(calc_doc, 4)) + + # check if "b1" is accessible in filter of the column-b + # (so all values of the column B are available) + self.assertEqual(4, self.get_values_count_in_AutoFilter(gridwin, "1")) + + self.ui_test.close_doc() + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 8fe147b0a5f9..a053367c8314 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -801,6 +801,7 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode eMode) // Remove old entries. aParam.RemoveAllEntriesByField(rPos.Col()); + if( !(eMode == AutoFilterMode::Normal && mpAutoFilterPopup->isAllSelected() ) ) { // Try to use the existing entry for the column (if one exists). ScQueryEntry* pEntry = aParam.FindEntryByField(rPos.Col(), true); |