sc/source/ui/cctrl/checklistmenu.cxx |   10 +++++++---
 sc/source/ui/inc/checklistmenu.hxx   |    2 +-
 sc/source/ui/view/gridwin.cxx        |    6 +++---
 3 files changed, 11 insertions(+), 7 deletions(-)

New commits:
commit d272bf4f8f3a083b8c37f7b10f89cd2bf76b7d21
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Sat Nov 27 20:07:33 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Sat Nov 27 22:22:51 2021 +0100

    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 <caol...@redhat.com>

diff --git a/sc/source/ui/cctrl/checklistmenu.cxx 
b/sc/source/ui/cctrl/checklistmenu.cxx
index 6172012d920d..e140cee466d0 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 e6b4d25a7e9b..c73843df8a16 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 3116dfb9ac13..f783ffdf7ca2 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));

Reply via email to