include/vcl/weld.hxx                      |   11 ++++++-----
 sfx2/source/sidebar/SidebarController.cxx |    9 ++++++---
 vcl/inc/salvtables.hxx                    |    1 +
 vcl/source/app/salvtables.cxx             |   13 ++++++++++---
 vcl/unx/gtk3/gtk3gtkinst.cxx              |    9 +++++++++
 5 files changed, 32 insertions(+), 11 deletions(-)

New commits:
commit 1a490b71feb2340ac4f58ff1bef983ef1115e2f3
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Feb 11 20:57:25 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Feb 12 10:10:23 2021 +0100

    allow using css::graphic::XGraphic to set menu image
    
    Change-Id: Ice5062f26ea300aec73d5fd849484c8bc4fc43bd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110793
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 7921948027a3..c33bd97a098a 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -2220,6 +2220,7 @@ public:
 
     virtual void insert(int pos, const OUString& rId, const OUString& rStr,
                         const OUString* pIconName, VirtualDevice* 
pImageSurface,
+                        const css::uno::Reference<css::graphic::XGraphic>* 
pImage,
                         TriState eCheckRadioFalse)
         = 0;
 
@@ -2232,23 +2233,23 @@ public:
 
     void append(const OUString& rId, const OUString& rStr)
     {
-        insert(-1, rId, rStr, nullptr, nullptr, TRISTATE_INDET);
+        insert(-1, rId, rStr, nullptr, nullptr, nullptr, TRISTATE_INDET);
     }
     void append_check(const OUString& rId, const OUString& rStr)
     {
-        insert(-1, rId, rStr, nullptr, nullptr, TRISTATE_TRUE);
+        insert(-1, rId, rStr, nullptr, nullptr, nullptr, TRISTATE_TRUE);
     }
     void append_radio(const OUString& rId, const OUString& rStr)
     {
-        insert(-1, rId, rStr, nullptr, nullptr, TRISTATE_FALSE);
+        insert(-1, rId, rStr, nullptr, nullptr, nullptr, TRISTATE_FALSE);
     }
     void append(const OUString& rId, const OUString& rStr, const OUString& 
rImage)
     {
-        insert(-1, rId, rStr, &rImage, nullptr, TRISTATE_INDET);
+        insert(-1, rId, rStr, &rImage, nullptr, nullptr, TRISTATE_INDET);
     }
     void append(const OUString& rId, const OUString& rStr, VirtualDevice& 
rImage)
     {
-        insert(-1, rId, rStr, nullptr, &rImage, TRISTATE_INDET);
+        insert(-1, rId, rStr, nullptr, &rImage, nullptr, TRISTATE_INDET);
     }
 
     // return the number of toplevel nodes
diff --git a/sfx2/source/sidebar/SidebarController.cxx 
b/sfx2/source/sidebar/SidebarController.cxx
index 2af18b6d7558..ae12e361a6ba 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -1069,7 +1069,8 @@ void SidebarController::PopulatePopupMenus(weld::Menu& 
rMenu, weld::Menu& rCusto
     for (const auto& rItem : rMenuData)
     {
         OString sIdent("select" + OString::number(nIndex));
-        rMenu.insert(nIndex, OUString::fromUtf8(sIdent), rItem.msDisplayName, 
nullptr, nullptr, TRISTATE_FALSE);
+        rMenu.insert(nIndex, OUString::fromUtf8(sIdent), rItem.msDisplayName,
+                     nullptr, nullptr, nullptr, TRISTATE_FALSE);
         rMenu.set_active(sIdent, rItem.mbIsCurrentDeck);
         rMenu.set_sensitive(sIdent, rItem.mbIsEnabled && rItem.mbIsActive);
 
@@ -1079,13 +1080,15 @@ void SidebarController::PopulatePopupMenus(weld::Menu& 
rMenu, weld::Menu& rCusto
             {
                 // Don't allow the currently visible deck to be disabled.
                 OString sSubIdent("nocustomize" + OString::number(nIndex));
-                rCustomizationMenu.insert(nIndex, 
OUString::fromUtf8(sSubIdent), rItem.msDisplayName, nullptr, nullptr, 
TRISTATE_FALSE);
+                rCustomizationMenu.insert(nIndex, 
OUString::fromUtf8(sSubIdent), rItem.msDisplayName,
+                                          nullptr, nullptr, nullptr, 
TRISTATE_FALSE);
                 rCustomizationMenu.set_active(sSubIdent, true);
             }
             else
             {
                 OString sSubIdent("customize" + OString::number(nIndex));
-                rCustomizationMenu.insert(nIndex, 
OUString::fromUtf8(sSubIdent), rItem.msDisplayName, nullptr, nullptr, 
TRISTATE_TRUE);
+                rCustomizationMenu.insert(nIndex, 
OUString::fromUtf8(sSubIdent), rItem.msDisplayName,
+                                          nullptr, nullptr, nullptr, 
TRISTATE_TRUE);
                 rCustomizationMenu.set_active(sSubIdent, rItem.mbIsEnabled && 
rItem.mbIsActive);
             }
         }
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index a3941ff51e67..2416aa6ab696 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -153,6 +153,7 @@ public:
     virtual void clear() override;
     virtual void insert(int pos, const OUString& rId, const OUString& rStr,
                         const OUString* pIconName, VirtualDevice* 
pImageSurface,
+                        const css::uno::Reference<css::graphic::XGraphic>* 
pImage,
                         TriState eCheckRadioFalse) override;
     virtual void insert_separator(int pos, const OUString& rId) override;
     virtual void remove(const OString& rId) override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index a098a5acf67c..c5fba71e2b1a 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -693,7 +693,9 @@ Image createImage(const VirtualDevice& rDevice)
 
 sal_uInt16 insert_to_menu(sal_uInt16 nLastId, PopupMenu* pMenu, int pos, 
std::u16string_view rId,
                           const OUString& rStr, const OUString* pIconName,
-                          const VirtualDevice* pImageSurface, TriState 
eCheckRadioFalse)
+                          const VirtualDevice* pImageSurface,
+                          const css::uno::Reference<css::graphic::XGraphic>* 
pImage,
+                          TriState eCheckRadioFalse)
 {
     const sal_uInt16 nNewid = nLastId + 1;
 
@@ -715,6 +717,10 @@ sal_uInt16 insert_to_menu(sal_uInt16 nLastId, PopupMenu* 
pMenu, int pos, std::u1
     {
         pMenu->SetItemImage(nNewid, createImage(*pImageSurface));
     }
+    else if (pImage)
+    {
+        pMenu->SetItemImage(nNewid, Image(*pImage));
+    }
     return nNewid;
 }
 }
@@ -766,9 +772,10 @@ void SalInstanceMenu::set_visible(const OString& rIdent, 
bool bShow)
 void SalInstanceMenu::clear() { m_xMenu->Clear(); }
 void SalInstanceMenu::insert(int pos, const OUString& rId, const OUString& 
rStr,
                              const OUString* pIconName, VirtualDevice* 
pImageSurface,
+                             const 
css::uno::Reference<css::graphic::XGraphic>* pImage,
                              TriState eCheckRadioFalse)
 {
-    m_nLastId = insert_to_menu(m_nLastId, m_xMenu, pos, rId, rStr, pIconName, 
pImageSurface,
+    m_nLastId = insert_to_menu(m_nLastId, m_xMenu, pos, rId, rStr, pIconName, 
pImageSurface, pImage,
                                eCheckRadioFalse);
 }
 void SalInstanceMenu::insert_separator(int pos, const OUString& rId)
@@ -2663,7 +2670,7 @@ public:
                              TriState eCheckRadioFalse) override
     {
         m_nLastId = insert_to_menu(m_nLastId, m_xMenuButton->GetPopupMenu(), 
pos, rId, rStr,
-                                   pIconName, pImageSurface, eCheckRadioFalse);
+                                   pIconName, pImageSurface, nullptr, 
eCheckRadioFalse);
     }
 
     virtual void insert_separator(int pos, const OUString& rId) override
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index d24edef22ae9..2a9e02308cd3 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -8282,6 +8282,7 @@ public:
 
     virtual void insert(int pos, const OUString& rId, const OUString& rStr,
                         const OUString* pIconName, VirtualDevice* 
pImageSurface,
+                        const css::uno::Reference<css::graphic::XGraphic>* 
pGraphic,
                         TriState eCheckRadioFalse) override
     {
         GtkWidget* pImage = nullptr;
@@ -8297,6 +8298,14 @@ public:
         {
             pImage = image_new_from_virtual_device(*pImageSurface);
         }
+        else if (pGraphic)
+        {
+            if (GdkPixbuf* pixbuf = getPixbuf(*pGraphic))
+            {
+                pImage = gtk_image_new_from_pixbuf(pixbuf);
+                g_object_unref(pixbuf);
+            }
+        }
 
         GtkWidget *pItem;
         if (pImage)
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to