From: Matthias Clasen Date: Thu, 6 Feb 2020 04:07:33 +0000 (-0500) Subject: a11y: Report children of widgets X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~84^2~11 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b3f5243aeb6a2b06d66b11b8cebcbb8770b2151e;p=gtk4.git a11y: Report children of widgets We want children of composite accessibles to be reported. --- diff --git a/gtk/a11y/gtkwidgetaccessible.c b/gtk/a11y/gtkwidgetaccessible.c index 0a07f47fe2..79c38a8f01 100644 --- a/gtk/a11y/gtkwidgetaccessible.c +++ b/gtk/a11y/gtkwidgetaccessible.c @@ -409,16 +409,26 @@ gtk_widget_accessible_get_index_in_parent (AtkObject *accessible) } } - if (!GTK_IS_WIDGET (widget)) - return -1; parent_widget = gtk_widget_get_parent (widget); - if (!GTK_IS_CONTAINER (parent_widget)) - return -1; + if (GTK_IS_CONTAINER (parent_widget)) + { + children = gtk_container_get_children (GTK_CONTAINER (parent_widget)); + index = g_list_index (children, widget); + g_list_free (children); + } + else if (GTK_IS_WIDGET (parent_widget)) + { + GtkWidget *child; - children = gtk_container_get_children (GTK_CONTAINER (parent_widget)); + for (child = gtk_widget_get_first_child (parent_widget), index = 0; child; child = gtk_widget_get_next_sibling (child), index++) + { + if (child == widget) + break; + } + } + else + index = -1; - index = g_list_index (children, widget); - g_list_free (children); return index; }