summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-11-05 10:50:24 +0000
committerCaolán McNamara <caolanm@redhat.com>2021-11-05 13:34:09 +0100
commit55bdb61f5219ea93dee00ab1a8a9735ca2ea7976 (patch)
tree24c37b95bf914d2de01fe499890e364bf1a39620
parent97cc576a4aebd9b0c0b34b62f562f0386a137332 (diff)
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 <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtkinst.cxx138
1 files changed, 60 insertions, 78 deletions
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