vcl/unx/gtk3/gtkinst.cxx |  182 ++++++++++++++++++++---------------------------
 1 file changed, 81 insertions(+), 101 deletions(-)

New commits:
commit d13712200e2c0cfee56afb6796f35e0fd15186e1
Author:     Caolán McNamara <[email protected]>
AuthorDate: Fri Nov 5 11:03:43 2021 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Fri Nov 5 13:34:23 2021 +0100

    gtk4: move find_image_widget into utilities
    
    Change-Id: I9a0187ff26171eb2133ea7b46f3638729198c869
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124740
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 9c0ee3c1144d..3469ff87049b 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -4515,6 +4515,27 @@ namespace
         }
         return pLabel;
     }
+
+    GtkWidget* find_image_widget(GtkWidget* pContainer)
+    {
+        GtkWidget* pImage = nullptr;
+        for (GtkWidget* pChild = gtk_widget_get_first_child(pContainer);
+             pChild; pChild = gtk_widget_get_next_sibling(pChild))
+        {
+            if (GTK_IS_IMAGE(pChild))
+            {
+                pImage = pChild;
+                break;
+            }
+            else
+            {
+                pImage = find_image_widget(pChild);
+                if (pImage)
+                    break;
+            }
+        }
+        return pImage;
+    }
 #else
     GtkWidget* find_label_widget(GtkContainer* pContainer)
     {
@@ -9908,29 +9929,6 @@ private:
         gtk_widget_show(GTK_WIDGET(m_pImage));
     }
 
-#if GTK_CHECK_VERSION(4, 0, 0)
-    static GtkWidget* find_image_widget(GtkWidget* pContainer)
-    {
-        GtkWidget* pImage = nullptr;
-        for (GtkWidget* pChild = gtk_widget_get_first_child(pContainer);
-             pChild; pChild = gtk_widget_get_next_sibling(pChild))
-        {
-            if (GTK_IS_IMAGE(pChild))
-            {
-                pImage = pChild;
-                break;
-            }
-            else
-            {
-                pImage = find_image_widget(pChild);
-                if (pImage)
-                    break;
-            }
-        }
-        return pImage;
-    }
-#endif
-
     static void find_image(GtkWidget *pWidget, gpointer user_data)
     {
         GtkImage **ppImage = static_cast<GtkImage**>(user_data);
commit 55bdb61f5219ea93dee00ab1a8a9735ca2ea7976
Author:     Caolán McNamara <[email protected]>
AuthorDate: Fri Nov 5 10:50:24 2021 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Fri Nov 5 13:34:09 2021 +0100

    gtk[3|4] merge label search code
    
    Change-Id: I90454bea86178c1fa6f6698593253b99e1871d61
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124739
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index a0678b789283..9c0ee3c1144d 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -4495,28 +4495,73 @@ namespace
     }
 
 #if GTK_CHECK_VERSION(4, 0, 0)
-    GtkLabel* get_button_label_widget(GtkButton* pButton)
+    GtkWidget* find_label_widget(GtkWidget* pContainer)
     {
-        GtkWidget* pChild = gtk_button_get_child(pButton);
-        GtkLabel* pLabel = GTK_IS_LABEL(pChild) ? GTK_LABEL(pChild) : nullptr;
-        if (!pLabel && pChild)
+        GtkWidget* pLabel = nullptr;
+        for (GtkWidget* pChild = gtk_widget_get_first_child(pContainer);
+             pChild; pChild = gtk_widget_get_next_sibling(pChild))
         {
-            for (GtkWidget* pBoxChild = gtk_widget_get_first_child(pChild);
-                 pBoxChild; pBoxChild = gtk_widget_get_next_sibling(pBoxChild))
+            if (GTK_IS_LABEL(pChild))
             {
-                pLabel = GTK_IS_LABEL(pBoxChild) ? GTK_LABEL(pBoxChild) : 
nullptr;
+                pLabel = pChild;
+                break;
+            }
+            else
+            {
+                pLabel = find_label_widget(pChild);
                 if (pLabel)
                     break;
             }
         }
         return pLabel;
     }
+#else
+    GtkWidget* find_label_widget(GtkContainer* pContainer)
+    {
+        GList* pChildren = gtk_container_get_children(pContainer);
+
+        GtkWidget* pChild = nullptr;
+        for (GList* pCandidate = pChildren; pCandidate; pCandidate = 
pCandidate->next)
+        {
+            if (GTK_IS_LABEL(pCandidate->data))
+            {
+                pChild = GTK_WIDGET(pCandidate->data);
+                break;
+            }
+            else if (GTK_IS_CONTAINER(pCandidate->data))
+            {
+                pChild = find_label_widget(GTK_CONTAINER(pCandidate->data));
+                if (pChild)
+                    break;
+            }
+        }
+        g_list_free(pChildren);
+
+        return pChild;
+    }
+#endif
+
+    GtkLabel* get_label_widget(GtkWidget* pButton)
+    {
+#if !GTK_CHECK_VERSION(4, 0, 0)
+        GtkWidget* pChild = gtk_bin_get_child(GTK_BIN(pButton));
+
+        if (GTK_IS_CONTAINER(pChild))
+            pChild = find_label_widget(GTK_CONTAINER(pChild));
+        else if (!GTK_IS_LABEL(pChild))
+            pChild = nullptr;
+
+        return GTK_LABEL(pChild);
+#else
+        return GTK_LABEL(find_label_widget(pButton));
 #endif
+    }
+
 
     OUString get_button_label(GtkButton* pButton)
     {
 #if GTK_CHECK_VERSION(4, 0, 0)
-        if (GtkLabel* pLabel = get_button_label_widget(pButton))
+        if (GtkLabel* pLabel = get_label_widget(GTK_WIDGET(pButton)))
             return ::get_label(pLabel);
 #endif
         const gchar* pStr = gtk_button_get_label(pButton);
@@ -4526,7 +4571,7 @@ namespace
     void set_button_label(GtkButton* pButton, const OUString& rText)
     {
 #if GTK_CHECK_VERSION(4, 0, 0)
-        if (GtkLabel* pLabel = get_button_label_widget(pButton))
+        if (GtkLabel* pLabel = get_label_widget(GTK_WIDGET(pButton)))
         {
             ::set_label(pLabel, rText);
             gtk_widget_set_visible(GTK_WIDGET(pLabel), true);
@@ -6980,69 +7025,6 @@ public:
     }
 };
 
-#if GTK_CHECK_VERSION(4, 0, 0)
-GtkWidget* find_label_widget(GtkWidget* pContainer)
-{
-    GtkWidget* pLabel = nullptr;
-    for (GtkWidget* pChild = gtk_widget_get_first_child(pContainer);
-         pChild; pChild = gtk_widget_get_next_sibling(pChild))
-    {
-        if (GTK_IS_LABEL(pChild))
-        {
-            pLabel = pChild;
-            break;
-        }
-        else
-        {
-            pLabel = find_label_widget(pChild);
-            if (pLabel)
-                break;
-        }
-    }
-    return pLabel;
-}
-#else
-GtkWidget* find_label_widget(GtkContainer* pContainer)
-{
-    GList* pChildren = gtk_container_get_children(pContainer);
-
-    GtkWidget* pChild = nullptr;
-    for (GList* pCandidate = pChildren; pCandidate; pCandidate = 
pCandidate->next)
-    {
-        if (GTK_IS_LABEL(pCandidate->data))
-        {
-            pChild = GTK_WIDGET(pCandidate->data);
-            break;
-        }
-        else if (GTK_IS_CONTAINER(pCandidate->data))
-        {
-            pChild = find_label_widget(GTK_CONTAINER(pCandidate->data));
-            if (pChild)
-                break;
-        }
-    }
-    g_list_free(pChildren);
-
-    return pChild;
-}
-#endif
-
-GtkWidget* get_label_widget(GtkWidget* pButton)
-{
-#if !GTK_CHECK_VERSION(4, 0, 0)
-    GtkWidget* pChild = gtk_bin_get_child(GTK_BIN(pButton));
-
-    if (GTK_IS_CONTAINER(pChild))
-        pChild = find_label_widget(GTK_CONTAINER(pChild));
-    else if (!GTK_IS_LABEL(pChild))
-        pChild = nullptr;
-
-    return pChild;
-#else
-    return find_label_widget(pButton);
-#endif
-}
-
 void set_label_wrap(GtkLabel* pLabel, bool bWrap)
 {
 #if GTK_CHECK_VERSION(4, 0, 0)
@@ -9308,8 +9290,8 @@ public:
     virtual void set_font(const vcl::Font& rFont) override
     {
         m_xFont = rFont;
-        GtkWidget* pChild = ::get_label_widget(GTK_WIDGET(m_pButton));
-        ::set_font(GTK_LABEL(pChild), rFont);
+        GtkLabel* pChild = ::get_label_widget(GTK_WIDGET(m_pButton));
+        ::set_font(pChild, rFont);
     }
 
     virtual vcl::Font get_font() override
@@ -10111,8 +10093,8 @@ public:
     virtual void set_font(const vcl::Font& rFont) override
     {
         m_xFont = rFont;
-        GtkWidget* pChild = ::get_label_widget(GTK_WIDGET(m_pMenuButton));
-        ::set_font(GTK_LABEL(pChild), rFont);
+        GtkLabel* pChild = ::get_label_widget(GTK_WIDGET(m_pMenuButton));
+        ::set_font(pChild, rFont);
     }
 
     virtual vcl::Font get_font() override
@@ -11914,8 +11896,8 @@ public:
 
     virtual void set_label_wrap(bool bWrap) override
     {
-        GtkWidget* pChild = ::get_label_widget(GTK_WIDGET(m_pCheckButton));
-        ::set_label_wrap(GTK_LABEL(pChild), bWrap);
+        GtkLabel* pChild = ::get_label_widget(GTK_WIDGET(m_pCheckButton));
+        ::set_label_wrap(pChild, bWrap);
     }
 
     virtual void disable_notify_events() override

Reply via email to