Resolves: tdf#144410 show submenu indicator for color filtering options
do it as an easily backportable change
Change-Id: Ib92e8f1e35e6465b52a69f3a8513068668dc6953
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125949
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx
index 6172012..e140cee 100644
--- a/sc/source/ui/cctrl/checklistmenu.cxx
+++ b/sc/source/ui/cctrl/checklistmenu.cxx
@@ -120,7 +120,7 @@ IMPL_LINK_NOARG(ScCheckListMenuControl, SelectHdl, weld::TreeView&, void)
setSelectedMenuItem(nSelectedMenu, true);
}
void ScCheckListMenuControl::addMenuItem(const OUString& rText, Action* pAction)
void ScCheckListMenuControl::addMenuItem(const OUString& rText, Action* pAction, bool bIndicateSubMenu)
{
MenuItemData aItem;
aItem.mbEnabled = true;
@@ -130,7 +130,12 @@ void ScCheckListMenuControl::addMenuItem(const OUString& rText, Action* pAction)
mxMenu->show();
mxMenu->append_text(rText);
if (mbCanHaveSubMenu)
mxMenu->set_image(mxMenu->n_children() - 1, css::uno::Reference<css::graphic::XGraphic>(), 1);
{
if (bIndicateSubMenu)
mxMenu->set_image(mxMenu->n_children() - 1, *mxDropDown, 1);
else
mxMenu->set_image(mxMenu->n_children() - 1, css::uno::Reference<css::graphic::XGraphic>(), 1);
}
}
void ScCheckListMenuControl::addSeparator()
@@ -1483,7 +1488,6 @@ void ScListSubMenuControl::addMenuItem(const OUString& rText, ScCheckListMenuCon
aItem.mbEnabled = true;
aItem.mxAction.reset(pAction);
maMenuItems.emplace_back(std::move(aItem));
mxMenu->show();
mxMenu->append_text(rText);
}
diff --git a/sc/source/ui/inc/checklistmenu.hxx b/sc/source/ui/inc/checklistmenu.hxx
index e6b4d25..c73843d 100644
--- a/sc/source/ui/inc/checklistmenu.hxx
+++ b/sc/source/ui/inc/checklistmenu.hxx
@@ -128,7 +128,7 @@ public:
vcl::ILibreOfficeKitNotifier* pNotifier);
~ScCheckListMenuControl();
void addMenuItem(const OUString& rText, Action* pAction);
void addMenuItem(const OUString& rText, Action* pAction, bool bIndicateSubMenu = false);
void addSeparator();
ScListSubMenuControl* addSubMenuItem(const OUString& rText, bool bEnabled);
void resizeToFitMenuItems();
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 3116dfb..f783ffd 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -594,7 +594,7 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
weld::Window* pPopupParent = GetFrameWeld();
int nColWidth = ScViewData::ToPixel(rDoc.GetColWidth(nCol, nTab), mrViewData.GetPPTX());
mpAutoFilterPopup.reset(new ScCheckListMenuControl(pPopupParent, &rDoc, false,
mpAutoFilterPopup.reset(new ScCheckListMenuControl(pPopupParent, &rDoc, true,
aFilterEntries.mbHasDates, nColWidth, pNotifier));
int nMaxTextWidth = 0;
@@ -736,9 +736,9 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
ScResId(SCSTR_FILTER_NOTEMPTY), new AutoFilterAction(this, AutoFilterMode::NonEmpty));
mpAutoFilterPopup->addSeparator();
mpAutoFilterPopup->addMenuItem(
ScResId(SCSTR_FILTER_TEXT_COLOR), new AutoFilterAction(this, AutoFilterMode::TextColor));
ScResId(SCSTR_FILTER_TEXT_COLOR), new AutoFilterAction(this, AutoFilterMode::TextColor), true);
mpAutoFilterPopup->addMenuItem(
ScResId(SCSTR_FILTER_BACKGROUND_COLOR), new AutoFilterAction(this, AutoFilterMode::BackgroundColor));
ScResId(SCSTR_FILTER_BACKGROUND_COLOR), new AutoFilterAction(this, AutoFilterMode::BackgroundColor), true);
mpAutoFilterPopup->addSeparator();
mpAutoFilterPopup->addMenuItem(
ScResId(SCSTR_STDFILTER), new AutoFilterAction(this, AutoFilterMode::Custom));