[gtk+] a11y: Make GtkWindowAccessible know about popovers
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] a11y: Make GtkWindowAccessible know about popovers
- Date: Mon, 10 Mar 2014 22:05:40 +0000 (UTC)
commit 9d54fee952460c84d6ea84a7e90942605484c07e
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Mar 7 00:07:00 2014 +0100
a11y: Make GtkWindowAccessible know about popovers
https://bugzilla.gnome.org/show_bug.cgi?id=725864
gtk/a11y/gtkwindowaccessible.c | 48 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/gtk/a11y/gtkwindowaccessible.c b/gtk/a11y/gtkwindowaccessible.c
index 4930ae6..7cb0f2b 100644
--- a/gtk/a11y/gtkwindowaccessible.c
+++ b/gtk/a11y/gtkwindowaccessible.c
@@ -23,6 +23,7 @@
#include "gtkwidgetaccessibleprivate.h"
#include "gtkwindowaccessible.h"
#include "gtktoplevelaccessible.h"
+#include "gtkwindowprivate.h"
/* atkcomponent.h */
@@ -279,6 +280,51 @@ gtk_window_accessible_ref_state_set (AtkObject *accessible)
}
static void
+count_widget (GtkWidget *widget,
+ gint *count)
+{
+ (*count)++;
+}
+
+static void
+prepend_widget (GtkWidget *widget,
+ GList **list)
+{
+ *list = g_list_prepend (*list, widget);
+}
+
+static gint
+gtk_window_accessible_get_n_children (AtkObject *object)
+{
+ GtkWidget *window;
+ gint count = 0;
+
+ window = gtk_accessible_get_widget (GTK_ACCESSIBLE (object));
+ gtk_container_forall (GTK_CONTAINER (window),
+ (GtkCallback) count_widget, &count);
+ return count;
+}
+
+static AtkObject *
+gtk_window_accessible_ref_child (AtkObject *object,
+ gint i)
+{
+ GtkWidget *window, *ref_child;
+ GList *children = NULL;
+
+ window = gtk_accessible_get_widget (GTK_ACCESSIBLE (object));
+ gtk_container_forall (GTK_CONTAINER (window),
+ (GtkCallback) prepend_widget, &children);
+ ref_child = g_list_nth_data (children, i);
+ g_list_free (children);
+
+ if (!ref_child)
+ return NULL;
+
+ return g_object_ref (gtk_widget_get_accessible (ref_child));
+}
+
+static void
gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
{
GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
@@ -292,6 +338,8 @@ gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
class->ref_state_set = gtk_window_accessible_ref_state_set;
class->initialize = gtk_window_accessible_initialize;
class->focus_event = gtk_window_accessible_focus_event;
+ class->get_n_children = gtk_window_accessible_get_n_children;
+ class->ref_child = gtk_window_accessible_ref_child;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]