vcl/unx/gtk3/gtkinst.cxx |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit ea5af2f02a7b7ace1e3927d7eff684b9fbb26fd8
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Mar 9 12:31:41 2022 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Mar 9 21:14:54 2022 +0100

    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 <caol...@redhat.com>

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
     }
 

Reply via email to