[gtk+] a11y: Add _gtk_cell_accessible_parent_get_child_index()



commit 02fd1e5a6260d8f74977a56f311be117b5417d38
Author: Benjamin Otte <otte redhat com>
Date:   Thu Nov 10 22:07:19 2011 +0100

    a11y: Add _gtk_cell_accessible_parent_get_child_index()
    
    This will soon replace the shenanigans we do to keep the index of cells
    current.

 gtk/a11y/gtkcellaccessible.c       |   10 ++++++++++
 gtk/a11y/gtkcellaccessibleparent.c |   16 ++++++++++++++++
 gtk/a11y/gtkcellaccessibleparent.h |    4 ++++
 3 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/gtk/a11y/gtkcellaccessible.c b/gtk/a11y/gtkcellaccessible.c
index 93f0ebe..54bd1ad 100644
--- a/gtk/a11y/gtkcellaccessible.c
+++ b/gtk/a11y/gtkcellaccessible.c
@@ -91,8 +91,18 @@ static gint
 gtk_cell_accessible_get_index_in_parent (AtkObject *obj)
 {
   GtkCellAccessible *cell;
+  AtkObject *parent;
+  int index;
 
   cell = GTK_CELL_ACCESSIBLE (obj);
+  parent = gtk_widget_get_accessible (cell->widget);
+  if (parent == NULL)
+    return -1;
+
+  index = _gtk_cell_accessible_parent_get_child_index (GTK_CELL_ACCESSIBLE_PARENT (parent), cell);
+  if (index >= 0)
+    return index;
+
   if (atk_state_set_contains_state (cell->state_set, ATK_STATE_STALE) &&
       cell->refresh_index != NULL)
     {
diff --git a/gtk/a11y/gtkcellaccessibleparent.c b/gtk/a11y/gtkcellaccessibleparent.c
index b63e5af..a05aaa1 100644
--- a/gtk/a11y/gtkcellaccessibleparent.c
+++ b/gtk/a11y/gtkcellaccessibleparent.c
@@ -95,3 +95,19 @@ _gtk_cell_accessible_parent_grab_focus (GtkCellAccessibleParent *parent,
   else
     return FALSE;
 }
+
+int
+_gtk_cell_accessible_parent_get_child_index (GtkCellAccessibleParent *parent,
+                                             GtkCellAccessible       *cell)
+{
+  GtkCellAccessibleParentIface *iface;
+
+  g_return_val_if_fail (GTK_IS_CELL_ACCESSIBLE_PARENT (parent), FALSE);
+
+  iface = GTK_CELL_ACCESSIBLE_PARENT_GET_IFACE (parent);
+
+  if (iface->get_child_index)
+    return (iface->get_child_index) (parent, cell);
+  else
+    return -1;
+}
diff --git a/gtk/a11y/gtkcellaccessibleparent.h b/gtk/a11y/gtkcellaccessibleparent.h
index 7969a8b..f4e1ea2 100644
--- a/gtk/a11y/gtkcellaccessibleparent.h
+++ b/gtk/a11y/gtkcellaccessibleparent.h
@@ -58,6 +58,8 @@ struct _GtkCellAccessibleParentIface
                                  GdkRectangle            *cell_rect);
   gboolean ( *grab_focus)       (GtkCellAccessibleParent *parent,
                                  GtkCellAccessible       *cell);
+  int      ( *get_child_index)  (GtkCellAccessibleParent *parent,
+                                 GtkCellAccessible       *cell);
 };
 
 GType    _gtk_cell_accessible_parent_get_type         (void);
@@ -74,6 +76,8 @@ void     _gtk_cell_accessible_parent_get_cell_area    (GtkCellAccessibleParent *
                                                        GdkRectangle            *cell_rect);
 gboolean _gtk_cell_accessible_parent_grab_focus       (GtkCellAccessibleParent *parent,
                                                        GtkCellAccessible       *cell);
+int      _gtk_cell_accessible_parent_get_child_index  (GtkCellAccessibleParent *parent,
+                                                       GtkCellAccessible       *cell);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]