summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-02-19 11:52:29 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-02-19 15:21:31 +0100
commit74e8f0b63894c921535d949fe0eebb43f7be52ed (patch)
tree8ba7f205256d7a23c25e71ca3db233231960a727
parenta0c8dc42335764d07c16a017c6b00486ec17ae53 (diff)
detect if menubutton already has an image and reuse it
Change-Id: Id8e48491ad27cd3bfac96817ae1bb4da751c38e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111210 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 470fae9387ea..5bbc0f125f3d 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -7586,6 +7586,17 @@ private:
}
}
+ static void find_image(GtkWidget *pWidget, gpointer user_data)
+ {
+ if (GTK_IS_IMAGE(pWidget))
+ {
+ GtkImage **ppImage = static_cast<GtkImage**>(user_data);
+ *ppImage = GTK_IMAGE(pWidget);
+ }
+ else if (GTK_IS_CONTAINER(pWidget))
+ gtk_container_forall(GTK_CONTAINER(pWidget), find_image, user_data);
+ }
+
public:
GtkInstanceMenuButton(GtkMenuButton* pMenuButton, GtkWidget* pMenuAlign, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceToggleButton(GTK_TOGGLE_BUTTON(pMenuButton), pBuilder, bTakeOwnership)
@@ -7598,6 +7609,7 @@ public:
, m_nSignalId(0)
{
m_pLabel = gtk_bin_get_child(GTK_BIN(m_pMenuButton));
+ find_image(GTK_WIDGET(m_pMenuButton), &m_pImage);
m_pBox = formatMenuButton(m_pLabel);
}