summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBalazs Varga <balazs.varga.extern@allotropia.de>2022-07-28 13:10:13 +0200
committerEike Rathke <erack@redhat.com>2022-07-29 18:17:20 +0200
commit7321db3cadc8c0e4437ca04e5dcb652734ea9c26 (patch)
tree3939a5d00a6e016805de32555bc5137dc856c0df
parent3777a1e769913460ecc818988df8fc57829d7113 (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.cxx13
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());
+ }
}
}