Merge branch 'cherry-pick-06f08ea8' into 'gtk-4-16'

[gtk-4-16] atcontext: Only recurse parents for non-widget accessibles

See merge request GNOME/gtk!7795
This commit is contained in:
Matthias Clasen
2024-10-04 14:26:00 +00:00

View File

@@ -515,29 +515,35 @@ static GtkATContext * get_parent_context (GtkATContext *self);
static inline void
maybe_realize_context (GtkATContext *self)
{
GtkAccessible *accessible_parent;
GtkATContext *parent_context;
parent_context = get_parent_context (self);
if (!GTK_IS_WIDGET (self->accessible) || (parent_context && parent_context->realized))
gtk_at_context_realize (self);
g_clear_object (&parent_context);
accessible_parent = self->accessible_parent;
while (accessible_parent && !GTK_IS_WIDGET (accessible_parent))
if (GTK_IS_WIDGET (self->accessible))
{
parent_context = gtk_accessible_get_at_context (accessible_parent);
GtkATContext *parent_context = get_parent_context (self);
if (!parent_context)
break;
gtk_at_context_realize (parent_context);
accessible_parent = parent_context->accessible_parent;
if (parent_context && parent_context->realized)
gtk_at_context_realize (self);
g_clear_object (&parent_context);
}
else
{
GtkAccessible *accessible_parent;
gtk_at_context_realize (self);
accessible_parent = self->accessible_parent;
while (accessible_parent && !GTK_IS_WIDGET (accessible_parent))
{
GtkATContext *parent_context = gtk_accessible_get_at_context (accessible_parent);
if (!parent_context)
break;
gtk_at_context_realize (parent_context);
accessible_parent = parent_context->accessible_parent;
g_clear_object (&parent_context);
}
}
}
/*< private >