From 678e11ecb560f7e62c30d85a5b430aa4888c046c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 16 Mar 2023 21:12:20 +0000 Subject: [PATCH] Merge branch 'fix_next_accessible_sibling_after_refcounts' into 'main' a11y: Fix the logic in gtk_accessible_get_next_accessible_sibling which decided whether we will use the overridden sibling on the context. See merge request GNOME/gtk!5659 --- gtk/gtkaccessible.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/gtk/gtkaccessible.c b/gtk/gtkaccessible.c index 873094a474..dad85e2e00 100644 --- a/gtk/gtkaccessible.c +++ b/gtk/gtkaccessible.c @@ -249,25 +249,21 @@ gtk_accessible_get_next_accessible_sibling (GtkAccessible *self) g_return_val_if_fail (GTK_IS_ACCESSIBLE (self), NULL); GtkATContext *context; + GtkAccessible *sibling = NULL; context = gtk_accessible_get_at_context (self); - if (context != NULL) + if (context != NULL && gtk_at_context_get_accessible_parent (context) != NULL) { - GtkAccessible *sibling = NULL; - - if (gtk_at_context_get_accessible_parent (context) != NULL) - { - sibling = gtk_at_context_get_next_accessible_sibling (context); - if (sibling != NULL) - sibling = g_object_ref (sibling); - } - - g_object_unref (context); - - return sibling; + sibling = gtk_at_context_get_next_accessible_sibling (context); + if (sibling != NULL) + sibling = g_object_ref (sibling); } else - return GTK_ACCESSIBLE_GET_IFACE (self)->get_next_accessible_sibling (self); + sibling = GTK_ACCESSIBLE_GET_IFACE (self)->get_next_accessible_sibling (self); + + g_clear_object (&context); + + return sibling; } /** -- 2.30.2