summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-03-09 12:31:41 +0000
committerCaolán McNamara <caolanm@redhat.com>2022-03-09 21:14:54 +0100
commitea5af2f02a7b7ace1e3927d7eff684b9fbb26fd8 (patch)
treeb14995e253cd7203c34d63af559a1308d5f9c766
parentd07cb9eccd7ae0a24e352906578d5c514ff3bc1d (diff)
gtk4: use gtk_accessible_update_relation to set labeled_by
Change-Id: I3dc69cf362192295d94e8f4d4072104430589a79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131242 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtkinst.cxx12
1 files changed, 8 insertions, 4 deletions
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index c1c338b22c6d..499b45c47d03 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -3770,11 +3770,17 @@ public:
virtual void set_accessible_relation_labeled_by(weld::Widget* pLabel) override
{
-#if !GTK_CHECK_VERSION(4, 0, 0)
+ GtkWidget* pGtkLabel = pLabel ? dynamic_cast<GtkInstanceWidget&>(*pLabel).getWidget() : nullptr;
+#if GTK_CHECK_VERSION(4, 0, 0)
+ gtk_accessible_update_relation(GTK_ACCESSIBLE(m_pWidget),
+ GTK_ACCESSIBLE_RELATION_LABELLED_BY,
+ pGtkLabel, nullptr,
+ -1);
+#else
AtkObject* pAtkObject = gtk_widget_get_accessible(m_pWidget);
if (!pAtkObject)
return;
- AtkObject *pAtkLabel = pLabel ? gtk_widget_get_accessible(dynamic_cast<GtkInstanceWidget&>(*pLabel).getWidget()) : nullptr;
+ AtkObject *pAtkLabel = pGtkLabel ? gtk_widget_get_accessible(pGtkLabel) : nullptr;
AtkRelationSet *pRelationSet = atk_object_ref_relation_set(pAtkObject);
AtkRelation *pRelation = atk_relation_set_get_relation_by_type(pRelationSet, ATK_RELATION_LABELLED_BY);
if (pRelation)
@@ -3787,8 +3793,6 @@ public:
atk_relation_set_add(pRelationSet, pRelation);
}
g_object_unref(pRelationSet);
-#else
- (void)pLabel;
#endif
}