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
