diff options
author | Balazs Varga <balazs.varga.extern@allotropia.de> | 2022-07-28 13:10:13 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2022-07-29 18:17:20 +0200 |
commit | 7321db3cadc8c0e4437ca04e5dcb652734ea9c26 (patch) | |
tree | 3939a5d00a6e016805de32555bc5137dc856c0df | |
parent | 3777a1e769913460ecc818988df8fc57829d7113 (diff) |
Related tdf#117276 sc: Show hidden filter elements as inactive elements
Ignoring filtered-out value when we unselecting All, re-selecting All button,
hitting the Cross-button ("Hide only the current item") or hitting the
Check-button ("Show only the current item").
Followed up commit of 2d1df9f3dccc10f13b8585ad18afce1542ebc4d1
Change-Id: I33e169a08054f1afec887915730eeae9a26d4739
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137558
Tested-by: Jenkins
Reviewed-by: Eike Rathke <erack@redhat.com>
-rw-r--r-- | sc/source/ui/cctrl/checklistmenu.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx index 36c2f891fb24..f2bbb0eebd11 100644 --- a/sc/source/ui/cctrl/checklistmenu.cxx +++ b/sc/source/ui/cctrl/checklistmenu.cxx @@ -624,7 +624,8 @@ void ScCheckListMenuControl::prepWindow() void ScCheckListMenuControl::setAllMemberState(bool bSet) { mpChecks->all_foreach([this, bSet](weld::TreeIter& rEntry){ - mpChecks->set_toggle(rEntry, bSet ? TRISTATE_TRUE : TRISTATE_FALSE); + if (mpChecks->get_sensitive(rEntry, 0)) + mpChecks->set_toggle(rEntry, bSet ? TRISTATE_TRUE : TRISTATE_FALSE); return false; }); @@ -681,11 +682,15 @@ IMPL_LINK(ScCheckListMenuControl, ButtonHdl, weld::Button&, rBtn, void) close(false); else if (&rBtn == mxBtnSelectSingle.get() || &rBtn == mxBtnUnselectSingle.get()) { - selectCurrentMemberOnly(&rBtn == mxBtnSelectSingle.get()); std::unique_ptr<weld::TreeIter> xEntry = mpChecks->make_iterator(); - if (!mpChecks->get_cursor(xEntry.get())) + bool bEntry = mpChecks->get_cursor(xEntry.get()); + if (!bEntry) xEntry.reset(); - Check(xEntry.get()); + if (bEntry && mpChecks->get_sensitive(*xEntry, 0)) + { + selectCurrentMemberOnly(&rBtn == mxBtnSelectSingle.get()); + Check(xEntry.get()); + } } } |