[gtk+] Convert GailCell to GtkCellAccessible



commit 07461459d4d2ee0c0827c373039a878a517862e4
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jul 9 18:30:59 2011 -0400

    Convert GailCell to GtkCellAccessible
    
    Including _-prefixing the API to reduce unwanted exports.

 gtk/a11y/Makefile.am             |    4 +-
 gtk/a11y/gailbooleancell.c       |    8 +-
 gtk/a11y/gailcell.c              |  487 --------------------------------------
 gtk/a11y/gailcell.h              |   95 --------
 gtk/a11y/gailcellparent.c        |   56 +----
 gtk/a11y/gailcellparent.h        |   14 +-
 gtk/a11y/gailcontainercell.c     |   45 ++--
 gtk/a11y/gailcontainercell.h     |   27 +--
 gtk/a11y/gailimagecell.h         |    2 +-
 gtk/a11y/gailrenderercell.c      |   19 +-
 gtk/a11y/gailrenderercell.h      |   26 +-
 gtk/a11y/gailtextcell.c          |    6 +-
 gtk/a11y/gailtextcell.h          |    7 +-
 gtk/a11y/gtkcellaccessible.c     |  423 +++++++++++++++++++++++++++++++++
 gtk/a11y/gtkcellaccessible.h     |   82 +++++++
 gtk/a11y/gtktreeviewaccessible.c |  201 ++++++++--------
 gtk/a11y/gtktreeviewaccessible.h |    1 -
 17 files changed, 690 insertions(+), 813 deletions(-)
---
diff --git a/gtk/a11y/Makefile.am b/gtk/a11y/Makefile.am
index de8a6e1..89682f2 100644
--- a/gtk/a11y/Makefile.am
+++ b/gtk/a11y/Makefile.am
@@ -8,7 +8,7 @@ gail_c_sources =			\
 	gailbooleancell.c		\
 	gtkboxaccessible.c		\
 	gtkbuttonaccessible.c		\
-	gailcell.c			\
+	gtkcellaccessible.c		\
 	gailcellparent.c		\
 	gtkcheckmenuitemaccessible.c	\
 	gtkchecksubmenuitemaccessible.c	\
@@ -60,7 +60,7 @@ gail_private_h_sources =		\
 	gailbooleancell.h		\
 	gtkboxaccessible.h		\
 	gtkbuttonaccessible.h		\
-	gailcell.h			\
+	gtkcellaccessible.h		\
 	gailcellparent.h		\
 	gtkcheckmenuitemaccessible.h	\
 	gtkchecksubmenuitemaccessible.h	\
diff --git a/gtk/a11y/gailbooleancell.c b/gtk/a11y/gailbooleancell.c
index 0aefcfa..81069e8 100644
--- a/gtk/a11y/gailbooleancell.c
+++ b/gtk/a11y/gailbooleancell.c
@@ -97,9 +97,9 @@ gail_boolean_cell_update_cache (GailRendererCell *cell,
       /* Update cell's state */
 
     if (new_boolean)
-      gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_CHECKED, emit_change_signal);
+      _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_CHECKED, emit_change_signal);
     else
-      gail_cell_remove_state (GAIL_CELL (cell), ATK_STATE_CHECKED, emit_change_signal);
+      _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_CHECKED, emit_change_signal);
     }
 
   if (boolean_cell->cell_sensitive != new_sensitive)
@@ -110,9 +110,9 @@ gail_boolean_cell_update_cache (GailRendererCell *cell,
       /* Update cell's state */
 
       if (new_sensitive)
-        gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_SENSITIVE, emit_change_signal);
+        _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_SENSITIVE, emit_change_signal);
       else
-        gail_cell_remove_state (GAIL_CELL (cell), ATK_STATE_SENSITIVE, emit_change_signal);
+        _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_SENSITIVE, emit_change_signal);
     }
 
   return rv;
diff --git a/gtk/a11y/gailcellparent.c b/gtk/a11y/gailcellparent.c
index 883b719..f63eaba 100644
--- a/gtk/a11y/gailcellparent.c
+++ b/gtk/a11y/gailcellparent.c
@@ -45,28 +45,14 @@ gail_cell_parent_get_type (void)
   return g_define_type_id__volatile;
 }
 
-/**
- * gail_cell_parent_get_cell_extents:
- * @parent: a #GObject instance that implements GailCellParentIface
- * @cell: a #GailCell whose extents is required
- * @x: address of #gint to put x coordinate
- * @y: address of #gint to put y coordinate
- * @width: address of #gint to put width
- * @height: address of #gint to put height
- * @coord_type: specifies whether the coordinates are relative to the screen
- * or to the components top level window
- *
- * Gets the rectangle which gives the extent of the @cell.
- *
- **/
 void
-gail_cell_parent_get_cell_extents (GailCellParent *parent,
-                                   GailCell       *cell,
-                                   gint           *x,
-                                   gint           *y,
-                                   gint           *width,
-                                   gint           *height,
-                                   AtkCoordType   coord_type)
+gail_cell_parent_get_cell_extents (GailCellParent    *parent,
+                                   GtkCellAccessible *cell,
+                                   gint              *x,
+                                   gint              *y,
+                                   gint              *width,
+                                   gint              *height,
+                                   AtkCoordType       coord_type)
 {
   GailCellParentIface *iface;
 
@@ -78,19 +64,10 @@ gail_cell_parent_get_cell_extents (GailCellParent *parent,
     (iface->get_cell_extents) (parent, cell, x, y, width, height, coord_type);
 }
 
-/**
- * gail_cell_parent_get_cell_area:
- * @parent: a #GObject instance that implements GailCellParentIface
- * @cell: a #GailCell whose area is required
- * @cell_rect: address of #GdkRectangle to put the cell area
- *
- * Gets the cell area of the @cell.
- *
- **/
 void
-gail_cell_parent_get_cell_area (GailCellParent *parent,
-                                GailCell       *cell,
-                                GdkRectangle   *cell_rect)
+gail_cell_parent_get_cell_area (GailCellParent    *parent,
+                                GtkCellAccessible *cell,
+                                GdkRectangle      *cell_rect)
 {
   GailCellParentIface *iface;
 
@@ -102,17 +79,10 @@ gail_cell_parent_get_cell_area (GailCellParent *parent,
   if (iface->get_cell_area)
     (iface->get_cell_area) (parent, cell, cell_rect);
 }
-/**
- * gail_cell_parent_grab_focus:
- * @parent: a #GObject instance that implements GailCellParentIface
- * @cell: a #GailCell whose area is required
- *
- * Puts focus in the specified cell.
- *
- **/
+
 gboolean
-gail_cell_parent_grab_focus (GailCellParent *parent,
-                             GailCell       *cell)
+gail_cell_parent_grab_focus (GailCellParent    *parent,
+                             GtkCellAccessible *cell)
 {
   GailCellParentIface *iface;
 
diff --git a/gtk/a11y/gailcellparent.h b/gtk/a11y/gailcellparent.h
index a7505bd..37eaedf 100644
--- a/gtk/a11y/gailcellparent.h
+++ b/gtk/a11y/gailcellparent.h
@@ -22,7 +22,7 @@
 #define __GAIL_CELL_PARENT_H__
 
 #include <atk/atk.h>
-#include "gailcell.h"
+#include "gtkcellaccessible.h"
 
 G_BEGIN_DECLS
 
@@ -50,23 +50,23 @@ struct _GailCellParentIface
 {
   GTypeInterface parent;
   void                  ( *get_cell_extents)      (GailCellParent        *parent,
-                                                   GailCell              *cell,
+                                                   GtkCellAccessible     *cell,
                                                    gint                  *x,
                                                    gint                  *y,
                                                    gint                  *width,
                                                    gint                  *height,
                                                    AtkCoordType          coord_type);
   void                  ( *get_cell_area)         (GailCellParent        *parent,
-                                                   GailCell              *cell,
+                                                   GtkCellAccessible     *cell,
                                                    GdkRectangle          *cell_rect);
   gboolean              ( *grab_focus)            (GailCellParent        *parent,
-                                                   GailCell              *cell);
+                                                   GtkCellAccessible     *cell);
 };
 
 GType  gail_cell_parent_get_type               (void);
 
 void   gail_cell_parent_get_cell_extents       (GailCellParent        *parent,
-                                                GailCell              *cell,
+                                                GtkCellAccessible     *cell,
                                                 gint                  *x,
                                                 gint                  *y,
                                                 gint                  *width,
@@ -74,10 +74,10 @@ void   gail_cell_parent_get_cell_extents       (GailCellParent        *parent,
                                                 AtkCoordType          coord_type
 );
 void  gail_cell_parent_get_cell_area           (GailCellParent        *parent,
-                                                GailCell              *cell,
+                                                GtkCellAccessible     *cell,
                                                 GdkRectangle          *cell_rect);
 gboolean gail_cell_parent_grab_focus           (GailCellParent        *parent,
-                                                GailCell              *cell);
+                                                GtkCellAccessible     *cell);
 
 G_END_DECLS
 
diff --git a/gtk/a11y/gailcontainercell.c b/gtk/a11y/gailcontainercell.c
index eb3a561..3757dd8 100644
--- a/gtk/a11y/gailcontainercell.c
+++ b/gtk/a11y/gailcontainercell.c
@@ -27,17 +27,17 @@ static void       gail_container_cell_init                (GailContainerCell   *
 static void       gail_container_cell_finalize            (GObject             *obj);
 
 
-static void       _gail_container_cell_recompute_child_indices 
+static void       _gail_container_cell_recompute_child_indices
                                                           (GailContainerCell *container);
 
-static void       gail_container_cell_refresh_child_index (GailCell *cell);
+static void       gail_container_cell_refresh_child_index (GtkCellAccessible *cell);
 
 static gint       gail_container_cell_get_n_children      (AtkObject *obj);
 
 static AtkObject* gail_container_cell_ref_child           (AtkObject *obj,
                                                            gint      child);
 
-G_DEFINE_TYPE (GailContainerCell, gail_container_cell, GAIL_TYPE_CELL)
+G_DEFINE_TYPE (GailContainerCell, gail_container_cell, GTK_TYPE_CELL_ACCESSIBLE)
 
 static void 
 gail_container_cell_class_init (GailContainerCellClass *klass)
@@ -93,65 +93,57 @@ gail_container_cell_finalize (GObject *obj)
   G_OBJECT_CLASS (gail_container_cell_parent_class)->finalize (obj);
 }
 
-
 void
 gail_container_cell_add_child (GailContainerCell *container,
-			       GailCell *child)
+                               GtkCellAccessible *child)
 {
   gint child_index;
 
-  g_return_if_fail (GAIL_IS_CONTAINER_CELL(container));
-  g_return_if_fail (GAIL_IS_CELL(child));
+  g_return_if_fail (GAIL_IS_CONTAINER_CELL (container));
+  g_return_if_fail (GTK_IS_CELL_ACCESSIBLE (child));
 
   child_index = container->NChildren++;
-  container->children = g_list_append (container->children, (gpointer) child);
+  container->children = g_list_append (container->children, child);
   child->index = child_index;
   atk_object_set_parent (ATK_OBJECT (child), ATK_OBJECT (container));
   child->refresh_index = gail_container_cell_refresh_child_index;
 }
 
-
 void
 gail_container_cell_remove_child (GailContainerCell *container,
-				  GailCell *child)
+                                  GtkCellAccessible *child)
 {
-  g_return_if_fail (GAIL_IS_CONTAINER_CELL(container));
-  g_return_if_fail (GAIL_IS_CELL(child));
+  g_return_if_fail (GAIL_IS_CONTAINER_CELL (container));
+  g_return_if_fail (GTK_IS_CELL_ACCESSIBLE (child));
   g_return_if_fail (container->NChildren > 0);
 
-  container->children = g_list_remove (container->children, (gpointer) child);
+  container->children = g_list_remove (container->children, child);
   _gail_container_cell_recompute_child_indices (container);
   container->NChildren--;
 }
 
-
 static void
 _gail_container_cell_recompute_child_indices (GailContainerCell *container)
 {
   gint cur_index = 0;
-  GList *temp_list;
-
-  g_return_if_fail (GAIL_IS_CONTAINER_CELL(container));
+  GList *l;
 
-  for (temp_list = container->children; temp_list; temp_list = temp_list->next)
+  for (l = container->children; l; l = l->next)
     {
-      GAIL_CELL(temp_list->data)->index = cur_index;
+      GTK_CELL_ACCESSIBLE (l->data)->index = cur_index;
       cur_index++;
     }
 }
 
-
 static void
-gail_container_cell_refresh_child_index (GailCell *cell)
+gail_container_cell_refresh_child_index (GtkCellAccessible *cell)
 {
   GailContainerCell *container;
-  g_return_if_fail (GAIL_IS_CELL(cell));
-  container = GAIL_CONTAINER_CELL (atk_object_get_parent (ATK_OBJECT(cell)));
-  g_return_if_fail (GAIL_IS_CONTAINER_CELL (container));
-  _gail_container_cell_recompute_child_indices (container);
-}
 
+  container = GAIL_CONTAINER_CELL (atk_object_get_parent (ATK_OBJECT (cell)));
 
+  _gail_container_cell_recompute_child_indices (container);
+}
 
 static gint
 gail_container_cell_get_n_children (AtkObject *obj)
@@ -162,7 +154,6 @@ gail_container_cell_get_n_children (AtkObject *obj)
   return cell->NChildren;
 }
 
-
 static AtkObject *
 gail_container_cell_ref_child (AtkObject *obj,
 			       gint       child)
diff --git a/gtk/a11y/gailcontainercell.h b/gtk/a11y/gailcontainercell.h
index 3892b5c..a9d98ee 100644
--- a/gtk/a11y/gailcontainercell.h
+++ b/gtk/a11y/gailcontainercell.h
@@ -8,7 +8,7 @@
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
@@ -21,7 +21,7 @@
 #define __GAIL_CONTAINER_CELL_H__
 
 #include <atk/atk.h>
-#include "gailcell.h"
+#include "gtkcellaccessible.h"
 
 G_BEGIN_DECLS
 
@@ -37,29 +37,26 @@ typedef struct _GailContainerCellClass             GailContainerCellClass;
 
 struct _GailContainerCell
 {
-  GailCell parent;
+  GtkCellAccessible parent;
   GList *children;
   gint NChildren;
 };
 
-GType gail_container_cell_get_type (void);
-
 struct _GailContainerCellClass
 {
-  GailCellClass parent_class;
+  GtkCellAccessibleClass parent_class;
 };
 
-GailContainerCell *
-gail_container_cell_new (void);
+GType gail_container_cell_get_type (void);
+
+GailContainerCell * gail_container_cell_new          (void);
 
-void
-gail_container_cell_add_child (GailContainerCell *container,
-			       GailCell *child);
+void                gail_container_cell_add_child    (GailContainerCell *container,
+                                                      GtkCellAccessible *child);
 
-void
-gail_container_cell_remove_child (GailContainerCell *container,
-				  GailCell *child);
+void                gail_container_cell_remove_child (GailContainerCell *container,
+                                                      GtkCellAccessible *child);
 
 G_END_DECLS
 
-#endif /* __GAIL_TREE_VIEW_TEXT_CELL_H__ */
+#endif /* __GAIL_CONTAINER_CELL_H__ */
diff --git a/gtk/a11y/gailimagecell.h b/gtk/a11y/gailimagecell.h
index 23aac47..d29819b 100644
--- a/gtk/a11y/gailimagecell.h
+++ b/gtk/a11y/gailimagecell.h
@@ -54,4 +54,4 @@ AtkObject *gail_image_cell_new (void);
 
 G_END_DECLS
 
-#endif /* __GAIL_TREE_VIEW_IMAGE_CELL_H__ */
+#endif /* __GAIL_IMAGE_CELL_H__ */
diff --git a/gtk/a11y/gailrenderercell.c b/gtk/a11y/gailrenderercell.c
index f423947..9449ba2 100644
--- a/gtk/a11y/gailrenderercell.c
+++ b/gtk/a11y/gailrenderercell.c
@@ -27,9 +27,9 @@ static void      gail_renderer_cell_init                (GailRendererCell      *
 
 static void      gail_renderer_cell_finalize            (GObject               *object);
 
-G_DEFINE_TYPE (GailRendererCell, gail_renderer_cell, GAIL_TYPE_CELL)
+G_DEFINE_TYPE (GailRendererCell, gail_renderer_cell, GTK_TYPE_CELL_ACCESSIBLE)
 
-static void 
+static void
 gail_renderer_cell_class_init (GailRendererCellClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
@@ -46,26 +46,29 @@ gail_renderer_cell_init (GailRendererCell *renderer_cell)
 }
 
 static void
-gail_renderer_cell_finalize (GObject  *object)
+gail_renderer_cell_finalize (GObject *object)
 {
   GailRendererCell *renderer_cell = GAIL_RENDERER_CELL (object);
 
   if (renderer_cell->renderer)
     g_object_unref (renderer_cell->renderer);
+
   G_OBJECT_CLASS (gail_renderer_cell_parent_class)->finalize (object);
 }
 
 gboolean
-gail_renderer_cell_update_cache (GailRendererCell *cell, 
-                                 gboolean         emit_change_signal)
+gail_renderer_cell_update_cache (GailRendererCell *cell,
+                                 gboolean          emit_change_signal)
 {
-  GailRendererCellClass *class = GAIL_RENDERER_CELL_GET_CLASS(cell);
+  GailRendererCellClass *class = GAIL_RENDERER_CELL_GET_CLASS (cell);
+
   if (class->update_cache)
-    return (class->update_cache)(cell, emit_change_signal);
+    return (class->update_cache) (cell, emit_change_signal);
+
   return FALSE;
 }
 
-AtkObject*
+AtkObject *
 gail_renderer_cell_new (void)
 {
   GObject *object;
diff --git a/gtk/a11y/gailrenderercell.h b/gtk/a11y/gailrenderercell.h
index 3e7e3aa..9de6257 100644
--- a/gtk/a11y/gailrenderercell.h
+++ b/gtk/a11y/gailrenderercell.h
@@ -21,7 +21,7 @@
 #define __GAIL_RENDERER_CELL_H__
 
 #include <atk/atk.h>
-#include "gailcell.h"
+#include "gtkcellaccessible.h"
 
 G_BEGIN_DECLS
 
@@ -32,29 +32,29 @@ G_BEGIN_DECLS
 #define GAIL_IS_RENDERER_CELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAIL_TYPE_RENDERER_CELL))
 #define GAIL_RENDERER_CELL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GAIL_TYPE_RENDERER_CELL, GailRendererCellClass))
 
-typedef struct _GailRendererCell                  GailRendererCell;
-typedef struct _GailRendererCellClass             GailRendererCellClass;
+typedef struct _GailRendererCell      GailRendererCell;
+typedef struct _GailRendererCellClass GailRendererCellClass;
 
 struct _GailRendererCell
 {
-  GailCell parent;
-  GtkCellRenderer *renderer;
+  GtkCellAccessible  parent;
+  GtkCellRenderer   *renderer;
 };
 
-GType gail_renderer_cell_get_type (void);
-
 struct _GailRendererCellClass
 {
-  GailCellClass parent_class;
+  GtkCellAccessibleClass parent_class;
   gchar **property_list;
-  gboolean (*update_cache)(GailRendererCell *cell, gboolean emit_change_signal);
+  gboolean (*update_cache) (GailRendererCell *cell,
+                            gboolean          emit_change_signal);
 };
 
-gboolean
-gail_renderer_cell_update_cache (GailRendererCell *cell, gboolean emit_change_signal);
+GType      gail_renderer_cell_get_type     (void);
 
-AtkObject *gail_renderer_cell_new (void);
+AtkObject *gail_renderer_cell_new          (void);
+gboolean   gail_renderer_cell_update_cache (GailRendererCell *cell,
+                                            gboolean          emit_change_signal);
 
 G_END_DECLS
 
-#endif /* __GAIL_TREE_VIEW_TEXT_CELL_H__ */
+#endif /* __GAIL_TEXT_CELL_H__ */
diff --git a/gtk/a11y/gailtextcell.c b/gtk/a11y/gailtextcell.c
index cc5debd..45ffc6a 100644
--- a/gtk/a11y/gailtextcell.c
+++ b/gtk/a11y/gailtextcell.c
@@ -151,7 +151,7 @@ gail_text_cell_init (GailTextCell *text_cell)
   text_cell->cell_text = NULL;
   text_cell->caret_pos = 0;
   text_cell->cell_length = 0;
-  atk_state_set_add_state (GAIL_CELL (text_cell)->state_set,
+  atk_state_set_add_state (GTK_CELL_ACCESSIBLE (text_cell)->state_set,
                            ATK_STATE_SINGLE_LINE);
 }
 
@@ -644,7 +644,7 @@ gail_text_cell_get_character_extents (AtkText          *text,
     parent = atk_object_get_parent (parent);
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
   g_return_if_fail (GAIL_IS_CELL_PARENT (parent));
-  gail_cell_parent_get_cell_area (GAIL_CELL_PARENT (parent), GAIL_CELL (text),
+  gail_cell_parent_get_cell_area (GAIL_CELL_PARENT (parent), GTK_CELL_ACCESSIBLE (text),
                                   &rendered_rect);
 
   gtk_cell_renderer_get_preferred_size (GTK_CELL_RENDERER (gtk_renderer),
@@ -730,7 +730,7 @@ gail_text_cell_get_offset_at_point (AtkText          *text,
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
 
   g_return_val_if_fail (GAIL_IS_CELL_PARENT (parent), -1);
-  gail_cell_parent_get_cell_area (GAIL_CELL_PARENT (parent), GAIL_CELL (text),
+  gail_cell_parent_get_cell_area (GAIL_CELL_PARENT (parent), GTK_CELL_ACCESSIBLE (text),
                                   &rendered_rect);
 
   gtk_cell_renderer_get_preferred_size (GTK_CELL_RENDERER (gtk_renderer),
diff --git a/gtk/a11y/gailtextcell.h b/gtk/a11y/gailtextcell.h
index d91ec99..55a526a 100644
--- a/gtk/a11y/gailtextcell.h
+++ b/gtk/a11y/gailtextcell.h
@@ -43,15 +43,14 @@ struct _GailTextCell
   gint cell_length;
 };
 
-GType gail_text_cell_get_type (void);
-
 struct _GailTextCellClass
 {
   GailRendererCellClass parent_class;
 };
 
-AtkObject *gail_text_cell_new (void);
+GType      gail_text_cell_get_type (void);
+AtkObject *gail_text_cell_new      (void);
 
 G_END_DECLS
 
-#endif /* __GAIL_TREE_VIEW_TEXT_CELL_H__ */
+#endif /* __GAIL_TEXT_CELL_H__ */
diff --git a/gtk/a11y/gtkcellaccessible.c b/gtk/a11y/gtkcellaccessible.c
new file mode 100644
index 0000000..d40a525
--- /dev/null
+++ b/gtk/a11y/gtkcellaccessible.c
@@ -0,0 +1,423 @@
+/* GAIL - The GNOME Accessibility Implementation Library
+ * Copyright 2001 Sun Microsystems Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+#include "gailcontainercell.h"
+#include "gtkcellaccessible.h"
+#include "gailcellparent.h"
+
+typedef struct _ActionInfo ActionInfo;
+struct _ActionInfo {
+  gchar *name;
+  gchar *description;
+  gchar *keybinding;
+  void (*do_action_func) (GtkCellAccessible *cell);
+};
+
+
+static void atk_action_interface_init    (AtkActionIface    *iface);
+static void atk_component_interface_init (AtkComponentIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (GtkCellAccessible, _gtk_cell_accessible, ATK_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init))
+
+static void
+destroy_action_info (gpointer action_info)
+{
+  ActionInfo *info = (ActionInfo *)action_info;
+
+  g_free (info->name);
+  g_free (info->description);
+  g_free (info->keybinding);
+  g_free (info);
+}
+
+static void
+gtk_cell_accessible_object_finalize (GObject *obj)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (obj);
+  AtkRelationSet *relation_set;
+  AtkRelation *relation;
+  GPtrArray *target;
+  gpointer target_object;
+  gint i;
+
+  if (cell->state_set)
+    g_object_unref (cell->state_set);
+
+  if (cell->action_list)
+    g_list_free_full (cell->action_list, destroy_action_info);
+
+  relation_set = atk_object_ref_relation_set (ATK_OBJECT (obj));
+  if (ATK_IS_RELATION_SET (relation_set))
+    {
+      relation = atk_relation_set_get_relation_by_type (relation_set,
+                                                        ATK_RELATION_NODE_CHILD_OF);
+      if (relation)
+        {
+          target = atk_relation_get_target (relation);
+          for (i = 0; i < target->len; i++)
+            {
+              target_object = g_ptr_array_index (target, i);
+              if (GTK_IS_CELL_ACCESSIBLE (target_object))
+                g_object_unref (target_object);
+            }
+        }
+      g_object_unref (relation_set);
+    }
+  G_OBJECT_CLASS (_gtk_cell_accessible_parent_class)->finalize (obj);
+}
+
+static gint
+gtk_cell_accessible_get_index_in_parent (AtkObject *obj)
+{
+  GtkCellAccessible *cell;
+
+  cell = GTK_CELL_ACCESSIBLE (obj);
+  if (atk_state_set_contains_state (cell->state_set, ATK_STATE_STALE) &&
+      cell->refresh_index != NULL)
+    {
+      cell->refresh_index (cell);
+      atk_state_set_remove_state (cell->state_set, ATK_STATE_STALE);
+    }
+
+  return cell->index;
+}
+
+static AtkStateSet *
+gtk_cell_accessible_ref_state_set (AtkObject *obj)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (obj);
+
+  g_object_ref (cell->state_set);
+
+  return cell->state_set;
+}
+
+static void
+_gtk_cell_accessible_class_init (GtkCellAccessibleClass *klass)
+{
+  AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
+  GObjectClass *g_object_class = G_OBJECT_CLASS (klass);
+
+  g_object_class->finalize = gtk_cell_accessible_object_finalize;
+
+  class->get_index_in_parent = gtk_cell_accessible_get_index_in_parent;
+  class->ref_state_set = gtk_cell_accessible_ref_state_set;
+}
+
+static void
+_gtk_cell_accessible_init (GtkCellAccessible *cell)
+{
+  cell->widget = NULL;
+  cell->action_list = NULL;
+  cell->index = 0;
+  cell->refresh_index = NULL;
+  cell->state_set = atk_state_set_new ();
+  atk_state_set_add_state (cell->state_set, ATK_STATE_TRANSIENT);
+  atk_state_set_add_state (cell->state_set, ATK_STATE_ENABLED);
+  atk_state_set_add_state (cell->state_set, ATK_STATE_SENSITIVE);
+  atk_state_set_add_state (cell->state_set, ATK_STATE_SELECTABLE);
+}
+
+static void
+widget_destroyed (GtkWidget         *widget,
+                  GtkCellAccessible *cell)
+{
+  cell->widget = NULL;
+}
+
+void
+_gtk_cell_accessible_initialise (GtkCellAccessible *cell,
+                                 GtkWidget         *widget,
+                                 AtkObject         *parent,
+                                 gint               index)
+{
+  cell->widget = widget;
+  atk_object_set_parent (ATK_OBJECT (cell), parent);
+  cell->index = index;
+
+  g_signal_connect_object (G_OBJECT (widget), "destroy",
+                           G_CALLBACK (widget_destroyed), cell, 0);
+}
+
+gboolean
+_gtk_cell_accessible_add_state (GtkCellAccessible *cell,
+                                AtkStateType       state_type,
+                                gboolean           emit_signal)
+{
+  gboolean rc;
+  AtkObject *parent;
+
+  if (atk_state_set_contains_state (cell->state_set, state_type))
+    return FALSE;
+
+  rc = atk_state_set_add_state (cell->state_set, state_type);
+
+  /* The signal should only be generated if the value changed,
+   * not when the cell is set up. So states that are set
+   * initially should pass FALSE as the emit_signal argument.
+   */
+  if (emit_signal)
+    {
+      atk_object_notify_state_change (ATK_OBJECT (cell), state_type, TRUE);
+      /* If state_type is ATK_STATE_VISIBLE, additional notification */
+      if (state_type == ATK_STATE_VISIBLE)
+        g_signal_emit_by_name (cell, "visible_data_changed");
+    }
+
+  /* If the parent is a flyweight container cell, propagate the state
+   * change to it also
+   */
+  parent = atk_object_get_parent (ATK_OBJECT (cell));
+  if (GAIL_IS_CONTAINER_CELL (parent))
+    _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (parent), state_type, emit_signal);
+
+  return rc;
+}
+
+gboolean
+_gtk_cell_accessible_remove_state (GtkCellAccessible *cell,
+                                   AtkStateType       state_type,
+                                   gboolean           emit_signal)
+{
+  gboolean rc;
+  AtkObject *parent;
+
+  if (!atk_state_set_contains_state (cell->state_set, state_type))
+    return FALSE;
+
+  parent = atk_object_get_parent (ATK_OBJECT (cell));
+
+  rc = atk_state_set_remove_state (cell->state_set, state_type);
+
+  /* The signal should only be generated if the value changed,
+   * not when the cell is set up.  So states that are set
+   * initially should pass FALSE as the emit_signal argument.
+   */
+  if (emit_signal)
+    {
+      atk_object_notify_state_change (ATK_OBJECT (cell), state_type, FALSE);
+      /* If state_type is ATK_STATE_VISIBLE, additional notification */
+      if (state_type == ATK_STATE_VISIBLE)
+        g_signal_emit_by_name (cell, "visible_data_changed");
+    }
+
+  /* If the parent is a flyweight container cell, propagate the state
+   * change to it also
+   */
+  if (GAIL_IS_CONTAINER_CELL (parent))
+    _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (parent), state_type, emit_signal);
+
+  return rc;
+}
+
+gboolean
+_gtk_cell_accessible_add_action (GtkCellAccessible *cell,
+                                 const gchar       *name,
+                                 const gchar       *description,
+                                 const gchar       *keybinding,
+                                 void (*func) (GtkCellAccessible *))
+{
+  ActionInfo *info;
+
+  info = g_new (ActionInfo, 1);
+  info->name = g_strdup (name);
+  info->description = g_strdup (description);
+  info->keybinding = g_strdup (keybinding);
+  info->do_action_func = func;
+
+  cell->action_list = g_list_append (cell->action_list, info);
+
+  return TRUE;
+}
+
+gboolean
+_gtk_cell_accessible_remove_action (GtkCellAccessible *cell,
+                                    gint               index)
+{
+  GList *l;
+
+  l = g_list_nth (cell->action_list, index);
+  if (l == NULL)
+    return FALSE;
+
+  destroy_action_info (l->data);
+  cell->action_list = g_list_remove_link (cell->action_list, l);
+
+  return TRUE;
+}
+
+
+gboolean
+_gtk_cell_accessible_remove_action_by_name (GtkCellAccessible *cell,
+                                            const gchar       *name)
+{
+  GList *l;
+
+  for (l = cell->action_list; l; l = l->next)
+    {
+      ActionInfo *info = l->data;
+
+      if (g_strcmp0 (info->name, name) == 0)
+        break;
+    }
+
+  if (l == NULL)
+    return FALSE;
+
+  destroy_action_info (l->data);
+  cell->action_list = g_list_remove_link (cell->action_list, l);
+
+  return TRUE;
+}
+
+static ActionInfo *
+get_action_info (GtkCellAccessible *cell,
+                 gint               index)
+{
+  GList *l;
+
+  l = g_list_nth (cell->action_list, index);
+  if (l == NULL)
+    return NULL;
+
+  return (ActionInfo *) (l->data);
+}
+
+static gint
+gtk_cell_accessible_action_get_n_actions (AtkAction *action)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE(action);
+  if (cell->action_list != NULL)
+    return g_list_length (cell->action_list);
+  else
+    return 0;
+}
+
+static const gchar *
+gtk_cell_accessible_action_get_name (AtkAction *action,
+                                     gint       index)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (action);
+  ActionInfo *info;
+
+  info = get_action_info (cell, index);
+  if (info == NULL)
+    return NULL;
+
+  return info->name;
+}
+
+static const gchar *
+gtk_cell_accessible_action_get_description (AtkAction *action,
+                                            gint       index)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (action);
+  ActionInfo *info;
+
+  info = get_action_info (cell, index);
+  if (info == NULL)
+    return NULL;
+
+  return info->description;
+}
+
+static const gchar *
+gtk_cell_accessible_action_get_keybinding (AtkAction *action,
+                                           gint       index)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (action);
+  ActionInfo *info;
+
+  info = get_action_info (cell, index);
+  if (info == NULL)
+    return NULL;
+
+  return info->keybinding;
+}
+
+static gboolean
+gtk_cell_accessible_action_do_action (AtkAction *action,
+                                      gint       index)
+{
+  GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (action);
+  ActionInfo *info;
+
+  info = get_action_info (cell, index);
+  if (info == NULL)
+    return FALSE;
+
+  if (info->do_action_func == NULL)
+    return FALSE;
+
+  info->do_action_func (cell);
+
+  return TRUE;
+}
+
+static void
+atk_action_interface_init (AtkActionIface *iface)
+{
+  iface->get_n_actions = gtk_cell_accessible_action_get_n_actions;
+  iface->do_action = gtk_cell_accessible_action_do_action;
+  iface->get_name = gtk_cell_accessible_action_get_name;
+  iface->get_description = gtk_cell_accessible_action_get_description;
+  iface->get_keybinding = gtk_cell_accessible_action_get_keybinding;
+}
+
+static void
+gtk_cell_accessible_get_extents (AtkComponent *component,
+                                 gint         *x,
+                                 gint         *y,
+                                 gint         *width,
+                                 gint         *height,
+                                 AtkCoordType  coord_type)
+{
+  GtkCellAccessible *cell;
+  AtkObject *parent;
+
+  cell = GTK_CELL_ACCESSIBLE (component);
+  parent = gtk_widget_get_accessible (cell->widget);
+
+  gail_cell_parent_get_cell_extents (GAIL_CELL_PARENT (parent),
+                                     cell, x, y, width, height, coord_type);
+}
+
+static gboolean
+gtk_cell_accessible_grab_focus (AtkComponent *component)
+{
+  GtkCellAccessible *cell;
+  AtkObject *parent;
+
+  cell = GTK_CELL_ACCESSIBLE (component);
+  parent = gtk_widget_get_accessible (cell->widget);
+
+  return gail_cell_parent_grab_focus (GAIL_CELL_PARENT (parent), cell);
+}
+
+static void
+atk_component_interface_init (AtkComponentIface *iface)
+{
+  iface->get_extents = gtk_cell_accessible_get_extents;
+  iface->grab_focus = gtk_cell_accessible_grab_focus;
+}
diff --git a/gtk/a11y/gtkcellaccessible.h b/gtk/a11y/gtkcellaccessible.h
new file mode 100644
index 0000000..234ca7d
--- /dev/null
+++ b/gtk/a11y/gtkcellaccessible.h
@@ -0,0 +1,82 @@
+/* GAIL - The GNOME Accessibility Implementation Library
+ * Copyright 2001 Sun Microsystems Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_CELL_ACCESSIBLE_H__
+#define __GTK_CELL_ACCESSIBLE_H__
+
+#include <atk/atk.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_CELL_ACCESSIBLE                           (_gtk_cell_accessible_get_type ())
+#define GTK_CELL_ACCESSIBLE(obj)                           (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_ACCESSIBLE, GtkCellAccessible))
+#define GTK_CELL_ACCESSIBLE_CLASS(klass)                   (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_ACCESSIBLE, GtkCellAccessibleClass))
+#define GTK_IS_CELL_ACCESSIBLE(obj)                        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_ACCESSIBLE))
+#define GTK_IS_CELL_ACCESSIBLE_CLASS(klass)                (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_ACCESSIBLE))
+#define GTK_CELL_ACCESSIBLE_GET_CLASS(obj)                 (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_ACCESSIBLE, GtkCellAccessibleClass))
+
+typedef struct _GtkCellAccessible      GtkCellAccessible;
+typedef struct _GtkCellAccessibleClass GtkCellAccessibleClass;
+
+struct _GtkCellAccessible
+{
+  AtkObject parent;
+
+  GtkWidget    *widget;
+  /* This cached value is used only by atk_object_get_index_in_parent()
+   * which updates the value when it is stale.
+   */
+  gint         index;
+  AtkStateSet *state_set;
+  GList       *action_list;
+  void (*refresh_index) (GtkCellAccessible *cell);
+};
+
+struct _GtkCellAccessibleClass
+{
+  AtkObjectClass parent_class;
+};
+
+GType    _gtk_cell_accessible_get_type      (void);
+
+void     _gtk_cell_accessible_initialise    (GtkCellAccessible *cell,
+                                             GtkWidget         *widget,
+                                             AtkObject         *parent,
+                                             gint               index);
+gboolean _gtk_cell_accessible_add_state     (GtkCellAccessible *cell,
+                                             AtkStateType       state_type,
+                                             gboolean           emit_signal);
+gboolean _gtk_cell_accessible_remove_state  (GtkCellAccessible *cell,
+                                             AtkStateType       state_type,
+                                             gboolean           emit_signal);
+gboolean _gtk_cell_accessible_add_action    (GtkCellAccessible *cell,
+                                             const gchar       *name,
+                                             const gchar       *description,
+                                             const gchar       *keybinding,
+                                             void (*func) (GtkCellAccessible *));
+
+gboolean _gtk_cell_accessible_remove_action (GtkCellAccessible *cell,
+                                             gint               index);
+gboolean _gtk_cell_accessible_remove_action_by_name
+                                            (GtkCellAccessible *cell,
+                                             const gchar       *name);
+
+G_END_DECLS
+
+#endif /* __GTK_CELL_ACCESSIBLE_H__ */
diff --git a/gtk/a11y/gtktreeviewaccessible.c b/gtk/a11y/gtktreeviewaccessible.c
index 59f6b9e..0a093b9 100644
--- a/gtk/a11y/gtktreeviewaccessible.c
+++ b/gtk/a11y/gtktreeviewaccessible.c
@@ -35,7 +35,7 @@
 typedef struct _GtkTreeViewAccessibleCellInfo  GtkTreeViewAccessibleCellInfo;
 struct _GtkTreeViewAccessibleCellInfo
 {
-  GailCell *cell;
+  GtkCellAccessible *cell;
   GtkTreeRowReference *cell_row_ref;
   GtkTreeViewColumn *cell_col_ref;
   GtkTreeViewAccessible *view;
@@ -99,7 +99,7 @@ static gboolean         update_cell_value               (GailRendererCell
                                                          GtkTreeViewAccessible           *accessible,
                                                          gboolean               emit_change_signal);
 static void             set_cell_visibility             (GtkTreeView            *tree_view,
-                                                         GailCell               *cell,
+                                                         GtkCellAccessible      *cell,
                                                          GtkTreeViewColumn      *tv_col,
                                                          GtkTreePath            *tree_path,
                                                          gboolean               emit_signal);
@@ -110,22 +110,22 @@ static void             set_expand_state                (GtkTreeView
                                                          GtkTreeViewAccessible           *accessible,
                                                          GtkTreePath            *tree_path,
                                                          gboolean               set_on_ancestor);
-static void             set_cell_expandable             (GailCell               *cell);
-static void             add_cell_actions                (GailCell               *cell,
+static void             set_cell_expandable             (GtkCellAccessible     *cell);
+static void             add_cell_actions                (GtkCellAccessible     *cell,
                                                          gboolean               editable);
 
-static void             toggle_cell_toggled             (GailCell               *cell);
-static void             edit_cell                       (GailCell               *cell);
-static void             activate_cell                   (GailCell               *cell);
+static void             toggle_cell_toggled             (GtkCellAccessible     *cell);
+static void             edit_cell                       (GtkCellAccessible     *cell);
+static void             activate_cell                   (GtkCellAccessible     *cell);
 static void             cell_destroyed                  (gpointer               data);
 static void             cell_info_new                   (GtkTreeViewAccessible           *accessible,
                                                          GtkTreeModel           *tree_model,
                                                          GtkTreePath            *path,
                                                          GtkTreeViewColumn      *tv_col,
-                                                         GailCell               *cell);
-static GailCell*        find_cell                       (GtkTreeViewAccessible           *accessible,
+                                                         GtkCellAccessible      *cell);
+static GtkCellAccessible *find_cell                       (GtkTreeViewAccessible           *accessible,
                                                          gint                   index);
-static void             refresh_cell_index              (GailCell               *cell);
+static void             refresh_cell_index              (GtkCellAccessible     *cell);
 static void             connect_model_signals           (GtkTreeView            *view,
                                                          GtkTreeViewAccessible           *accessible);
 static void             disconnect_model_signals        (GtkTreeViewAccessible           *accessible);
@@ -150,7 +150,7 @@ static gboolean         get_path_column_from_index      (GtkTreeView
                                                          GtkTreeViewColumn      **column);
 
 static GtkTreeViewAccessibleCellInfo* find_cell_info    (GtkTreeViewAccessible           *view,
-                                                         GailCell               *cell,
+                                                         GtkCellAccessible               *cell,
                                                          gboolean                live_only);
 static AtkObject *       get_header_from_column         (GtkTreeViewColumn      *tv_col);
 static gboolean          idle_garbage_collect_cell_data (gpointer data);
@@ -470,7 +470,7 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
 {
   GtkWidget *widget;
   GtkTreeViewAccessible *accessible;
-  GailCell *cell;
+  GtkCellAccessible *cell;
   GtkTreeView *tree_view;
   GtkTreeModel *tree_model;
   GtkCellRenderer *renderer;
@@ -550,12 +550,12 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
    */
   if (renderer_list && renderer_list->next)
     {
-      GailCell *container_cell;
+      GtkCellAccessible *container_cell;
 
       container = gail_container_cell_new ();
 
-      container_cell = GAIL_CELL (container);
-      gail_cell_initialise (container_cell, widget, ATK_OBJECT (accessible), i);
+      container_cell = GTK_CELL_ACCESSIBLE (container);
+      _gtk_cell_accessible_initialise (container_cell, widget, ATK_OBJECT (accessible), i);
 
       /* The GtkTreeViewAccessibleCellInfo structure for the container will
        * be before the ones for the cells so that the first one we find for
@@ -579,14 +579,14 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
 
       fake_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, NULL);
       child = gail_text_cell_new ();
-      cell = GAIL_CELL (child);
+      cell = GTK_CELL_ACCESSIBLE (child);
       renderer_cell = GAIL_RENDERER_CELL (child);
       renderer_cell->renderer = fake_renderer;
 
       /* Create the GtkTreeViewAccessibleCellInfo structure for this cell */
       cell_info_new (accessible, tree_model, path, tv_col, cell);
 
-      gail_cell_initialise (cell, widget, parent, i);
+      _gtk_cell_accessible_initialise (cell, widget, parent, i);
 
       cell->refresh_index = refresh_cell_index;
 
@@ -595,7 +595,7 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
         {
           set_cell_expandable (cell);
           if (is_expanded)
-            gail_cell_add_state (cell, ATK_STATE_EXPANDED, FALSE);
+            _gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDED, FALSE);
         }
     }
   else
@@ -616,13 +616,13 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
           else
             child = gail_renderer_cell_new ();
 
-          cell = GAIL_CELL (child);
+          cell = GTK_CELL_ACCESSIBLE (child);
           renderer_cell = GAIL_RENDERER_CELL (child);
 
           /* Create the GtkTreeViewAccessibleCellInfo for this cell */
           cell_info_new (accessible, tree_model, path, tv_col, cell);
 
-          gail_cell_initialise (cell, widget, parent, i);
+          _gtk_cell_accessible_initialise (cell, widget, parent, i);
 
           if (container)
             gail_container_cell_add_child (container, cell);
@@ -639,7 +639,7 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
             {
               set_cell_expandable (cell);
               if (is_expanded)
-                gail_cell_add_state (cell, ATK_STATE_EXPANDED, FALSE);
+                _gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDED, FALSE);
             }
 
           /* If the column is visible, sets the cell's state */
@@ -650,13 +650,13 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
           selection = gtk_tree_view_get_selection (tree_view);
 
           if (gtk_tree_selection_path_is_selected (selection, path))
-            gail_cell_add_state (cell, ATK_STATE_SELECTED, FALSE);
+            _gtk_cell_accessible_add_state (cell, ATK_STATE_SELECTED, FALSE);
 
-          gail_cell_add_state (cell, ATK_STATE_FOCUSABLE, FALSE);
+          _gtk_cell_accessible_add_state (cell, ATK_STATE_FOCUSABLE, FALSE);
           if (focus_index == i)
             {
               accessible->focus_cell = g_object_ref (cell);
-              gail_cell_add_state (cell, ATK_STATE_FOCUSED, FALSE);
+              _gtk_cell_accessible_add_state (cell, ATK_STATE_FOCUSED, FALSE);
               g_signal_emit_by_name (accessible, "active-descendant-changed", cell);
             }
         }
@@ -1332,9 +1332,9 @@ static void atk_selection_interface_init (AtkSelectionIface *iface)
 #define EXTRA_EXPANDER_PADDING 4
 
 static void
-gtk_tree_view_accessible_get_cell_area (GailCellParent *parent,
-                                        GailCell       *cell,
-                                        GdkRectangle   *cell_rect)
+gtk_tree_view_accessible_get_cell_area (GailCellParent    *parent,
+                                        GtkCellAccessible *cell,
+                                        GdkRectangle      *cell_rect)
 {
   GtkWidget *widget;
   GtkTreeView *tree_view;
@@ -1342,7 +1342,7 @@ gtk_tree_view_accessible_get_cell_area (GailCellParent *parent,
   GtkTreePath *path;
   AtkObject *parent_cell;
   GtkTreeViewAccessibleCellInfo *cell_info;
-  GailCell *top_cell;
+  GtkCellAccessible *top_cell;
 
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
   if (widget == NULL)
@@ -1351,14 +1351,9 @@ gtk_tree_view_accessible_get_cell_area (GailCellParent *parent,
   tree_view = GTK_TREE_VIEW (widget);
   parent_cell = atk_object_get_parent (ATK_OBJECT (cell));
   if (parent_cell != ATK_OBJECT (parent))
-    {
-      /* GailCell is in a GailContainerCell */
-      top_cell = GAIL_CELL (parent_cell);
-    }
+    top_cell = GTK_CELL_ACCESSIBLE (parent_cell);
   else
-    {
-      top_cell = cell;
-    }
+    top_cell = cell;
   cell_info = find_cell_info (GTK_TREE_VIEW_ACCESSIBLE (parent), top_cell, TRUE);
   if (!cell_info || !cell_info->cell_col_ref || !cell_info->cell_row_ref)
     return;
@@ -1418,13 +1413,13 @@ gtk_tree_view_accessible_get_cell_area (GailCellParent *parent,
 }
 
 static void
-gtk_tree_view_accessible_get_cell_extents (GailCellParent *parent,
-                                           GailCell       *cell,
-                                           gint           *x,
-                                           gint           *y,
-                                           gint           *width,
-                                           gint           *height,
-                                           AtkCoordType    coord_type)
+gtk_tree_view_accessible_get_cell_extents (GailCellParent    *parent,
+                                           GtkCellAccessible *cell,
+                                           gint              *x,
+                                           gint              *y,
+                                           gint              *width,
+                                           gint              *height,
+                                           AtkCoordType       coord_type)
 {
   GtkWidget *widget;
   GtkTreeView *tree_view;
@@ -1468,8 +1463,8 @@ gtk_tree_view_accessible_get_cell_extents (GailCellParent *parent,
 }
 
 static gboolean
-gtk_tree_view_accessible_grab_cell_focus (GailCellParent *parent,
-                                          GailCell       *cell)
+gtk_tree_view_accessible_grab_cell_focus (GailCellParent    *parent,
+                                          GtkCellAccessible *cell)
 {
   GtkWidget *widget;
   GtkTreeView *tree_view;
@@ -1496,7 +1491,7 @@ gtk_tree_view_accessible_grab_cell_focus (GailCellParent *parent,
   tv_col = cell_info->cell_col_ref;
   if (parent_cell != ATK_OBJECT (parent))
     {
-      /* GailCell is in a GailContainerCell.
+      /* GtkCellAccessible is in a GailContainerCell.
        * The GtkTreeViewColumn has multiple renderers;
        * find the corresponding one.
        */
@@ -1716,11 +1711,11 @@ selection_changed_cb (GtkTreeSelection *selection,
     {
       if (info->in_use)
         {
-          gail_cell_remove_state (info->cell, ATK_STATE_SELECTED, TRUE);
+          _gtk_cell_accessible_remove_state (info->cell, ATK_STATE_SELECTED, TRUE);
 
           path = gtk_tree_row_reference_get_path (info->cell_row_ref);
           if (path && gtk_tree_selection_path_is_selected (tree_selection, path))
-            gail_cell_add_state (info->cell, ATK_STATE_SELECTED, TRUE);
+            _gtk_cell_accessible_add_state (info->cell, ATK_STATE_SELECTED, TRUE);
           gtk_tree_path_free (path);
         }
     }
@@ -1891,16 +1886,16 @@ idle_cursor_changed (gpointer data)
         {
           if (accessible->focus_cell)
             {
-              gail_cell_remove_state (GAIL_CELL (accessible->focus_cell), ATK_STATE_ACTIVE, FALSE);
-              gail_cell_remove_state (GAIL_CELL (accessible->focus_cell), ATK_STATE_FOCUSED, FALSE);
+              _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (accessible->focus_cell), ATK_STATE_ACTIVE, FALSE);
+              _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (accessible->focus_cell), ATK_STATE_FOCUSED, FALSE);
               g_object_unref (accessible->focus_cell);
               accessible->focus_cell = cell;
             }
 
           if (gtk_widget_has_focus (widget))
             {
-              gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_ACTIVE, FALSE);
-              gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_FOCUSED, FALSE);
+              _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_ACTIVE, FALSE);
+              _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_FOCUSED, FALSE);
             }
 
           g_signal_emit_by_name (accessible, "active-descendant-changed", cell);
@@ -1949,9 +1944,9 @@ focus_in (GtkWidget *widget)
             {
               if (!atk_state_set_contains_state (state_set, ATK_STATE_FOCUSED))
                 {
-                  gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_ACTIVE, FALSE);
+                  _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_ACTIVE, FALSE);
                   accessible->focus_cell = cell;
-                  gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_FOCUSED, FALSE);
+                  _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell), ATK_STATE_FOCUSED, FALSE);
                   g_signal_emit_by_name (accessible, "active-descendant-changed", cell);
                 }
               g_object_unref (state_set);
@@ -1968,12 +1963,12 @@ focus_out (GtkWidget *widget)
 
   accessible = GTK_TREE_VIEW_ACCESSIBLE (gtk_widget_get_accessible (widget));
   if (accessible->focus_cell)
-  {
-    gail_cell_remove_state (GAIL_CELL (accessible->focus_cell), ATK_STATE_ACTIVE, FALSE);
-    gail_cell_remove_state (GAIL_CELL (accessible->focus_cell), ATK_STATE_FOCUSED, FALSE);
-    g_object_unref (accessible->focus_cell);
-    accessible->focus_cell = NULL;
-  }
+    {
+      _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (accessible->focus_cell), ATK_STATE_ACTIVE, FALSE);
+      _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (accessible->focus_cell), ATK_STATE_FOCUSED, FALSE);
+      g_object_unref (accessible->focus_cell);
+      accessible->focus_cell = NULL;
+    }
   return FALSE;
 }
 
@@ -2054,8 +2049,8 @@ column_visibility_changed (GObject    *object,
                                                tv_col, row_path, FALSE);
                       else
                         {
-                          gail_cell_remove_state (cell_info->cell, ATK_STATE_VISIBLE, TRUE);
-                          gail_cell_remove_state (cell_info->cell, ATK_STATE_SHOWING, TRUE);
+                          _gtk_cell_accessible_remove_state (cell_info->cell, ATK_STATE_VISIBLE, TRUE);
+                          _gtk_cell_accessible_remove_state (cell_info->cell, ATK_STATE_SHOWING, TRUE);
                         }
                     }
                   gtk_tree_path_free (row_path);
@@ -2272,7 +2267,7 @@ model_rows_reordered (GtkTreeModel *tree_model,
 
 static void
 set_cell_visibility (GtkTreeView       *tree_view,
-                     GailCell          *cell,
+                     GtkCellAccessible *cell,
                      GtkTreeViewColumn *tv_col,
                      GtkTreePath       *tree_path,
                      gboolean           emit_signal)
@@ -2290,16 +2285,16 @@ set_cell_visibility (GtkTreeView       *tree_view,
       /* The height will be zero for a cell for which an antecedent
        * is not expanded
        */
-      gail_cell_add_state (cell, ATK_STATE_VISIBLE, emit_signal);
+      _gtk_cell_accessible_add_state (cell, ATK_STATE_VISIBLE, emit_signal);
       if (is_cell_showing (tree_view, &cell_rect))
-        gail_cell_add_state (cell, ATK_STATE_SHOWING, emit_signal);
+        _gtk_cell_accessible_add_state (cell, ATK_STATE_SHOWING, emit_signal);
       else
-        gail_cell_remove_state (cell, ATK_STATE_SHOWING, emit_signal);
+        _gtk_cell_accessible_remove_state (cell, ATK_STATE_SHOWING, emit_signal);
     }
   else
     {
-      gail_cell_remove_state (cell, ATK_STATE_VISIBLE, emit_signal);
-      gail_cell_remove_state (cell, ATK_STATE_SHOWING, emit_signal);
+      _gtk_cell_accessible_remove_state (cell, ATK_STATE_VISIBLE, emit_signal);
+      _gtk_cell_accessible_remove_state (cell, ATK_STATE_SHOWING, emit_signal);
     }
 }
 
@@ -2364,7 +2359,7 @@ update_cell_value (GailRendererCell      *renderer_cell,
   GParamSpec *spec;
   GailRendererCellClass *gail_renderer_cell_class;
   GtkCellRendererClass *gtk_cell_renderer_class;
-  GailCell *cell;
+  GtkCellAccessible *cell;
   gchar **prop_list;
   AtkObject *parent;
   gboolean is_expander, is_expanded;
@@ -2377,7 +2372,7 @@ update_cell_value (GailRendererCell      *renderer_cell,
 
   prop_list = gail_renderer_cell_class->property_list;
 
-  cell = GAIL_CELL (renderer_cell);
+  cell = GTK_CELL_ACCESSIBLE (renderer_cell);
   cell_info = find_cell_info (accessible, cell, TRUE);
   if (!cell_info || !cell_info->cell_col_ref || !cell_info->cell_row_ref)
     return FALSE;
@@ -2754,7 +2749,7 @@ clean_cell_info (GtkTreeViewAccessible         *accessible,
     {
       obj = G_OBJECT (cell_info->cell);
 
-      gail_cell_add_state (cell_info->cell, ATK_STATE_DEFUNCT, FALSE);
+      _gtk_cell_accessible_add_state (cell_info->cell, ATK_STATE_DEFUNCT, FALSE);
       g_object_weak_unref (obj, (GWeakNotify) cell_destroyed, cell_info);
       cell_info->in_use = FALSE;
       if (!accessible->garbage_collection_pending)
@@ -2924,7 +2919,7 @@ traverse_cells (GtkTreeViewAccessible *accessible,
           if (act_on_cell && cell_info->in_use)
             {
               if (set_stale)
-                gail_cell_add_state (cell_info->cell, ATK_STATE_STALE, TRUE);
+                _gtk_cell_accessible_add_state (cell_info->cell, ATK_STATE_STALE, TRUE);
               set_cell_visibility (GTK_TREE_VIEW (widget),
                                    cell_info->cell,
                                    cell_info->cell_col_ref,
@@ -2972,7 +2967,7 @@ set_expand_state (GtkTreeView           *tree_view,
 
           if (cell_path != NULL)
             {
-              GailCell *cell = GAIL_CELL (cell_info->cell);
+              GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (cell_info->cell);
 
               expander_tv = gtk_tree_view_get_expander_column (tree_view);
 
@@ -3007,18 +3002,18 @@ set_expand_state (GtkTreeView           *tree_view,
                       set_cell_expandable (cell);
 
                       if (gtk_tree_view_row_expanded (tree_view, cell_path))
-                        gail_cell_add_state (cell, ATK_STATE_EXPANDED, TRUE);
+                        _gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDED, TRUE);
                       else
-                        gail_cell_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
+                        _gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
                     }
                   else
                     {
-                      gail_cell_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
-                      if (gail_cell_remove_state (cell, ATK_STATE_EXPANDABLE, TRUE))
+                      _gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
+                      if (_gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDABLE, TRUE))
                       /* The state may have been propagated to the container cell */
                       if (!GAIL_IS_CONTAINER_CELL (cell))
-                        gail_cell_remove_action_by_name (cell,
-                                                         "expand or contract");
+                        _gtk_cell_accessible_remove_action_by_name (cell,
+                                                                    "expand or contract");
                     }
 
                   /* We assume that each cell in the cache once and
@@ -3035,24 +3030,24 @@ set_expand_state (GtkTreeView           *tree_view,
 }
 
 static void
-add_cell_actions (GailCell *cell,
-                  gboolean  editable)
+add_cell_actions (GtkCellAccessible *cell,
+                  gboolean           editable)
 {
   if (GAIL_IS_BOOLEAN_CELL (cell))
-    gail_cell_add_action (cell,
-                          "toggle", "toggles the cell",
-                          NULL, toggle_cell_toggled);
+    _gtk_cell_accessible_add_action (cell,
+                                     "toggle", "toggles the cell",
+                                     NULL, toggle_cell_toggled);
   if (editable)
-    gail_cell_add_action (cell,
-                          "edit", "creates a widget in which the contents of the cell can be edited",
-                          NULL, edit_cell);
-  gail_cell_add_action (cell,
-                        "activate", "activate the cell",
-                        NULL, activate_cell);
+    _gtk_cell_accessible_add_action (cell,
+                                     "edit", "creates a widget in which the contents of the cell can be edited",
+                                     NULL, edit_cell);
+  _gtk_cell_accessible_add_action (cell,
+                                   "activate", "activate the cell",
+                                   NULL, activate_cell);
 }
 
 static void
-toggle_cell_expanded (GailCell *cell)
+toggle_cell_expanded (GtkCellAccessible *cell)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
   GtkTreeView *tree_view;
@@ -3083,7 +3078,7 @@ toggle_cell_expanded (GailCell *cell)
 }
 
 static void
-toggle_cell_toggled (GailCell *cell)
+toggle_cell_toggled (GtkCellAccessible *cell)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
   GtkTreePath *path;
@@ -3129,7 +3124,7 @@ toggle_cell_toggled (GailCell *cell)
 }
 
 static void
-edit_cell (GailCell *cell)
+edit_cell (GtkCellAccessible *cell)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
   GtkTreeView *tree_view;
@@ -3153,7 +3148,7 @@ edit_cell (GailCell *cell)
 }
 
 static void
-activate_cell (GailCell *cell)
+activate_cell (GtkCellAccessible *cell)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
   GtkTreeView *tree_view;
@@ -3218,7 +3213,7 @@ cell_info_new (GtkTreeViewAccessible *accessible,
                GtkTreeModel          *tree_model,
                GtkTreePath           *path,
                GtkTreeViewColumn     *tv_col,
-               GailCell              *cell)
+               GtkCellAccessible     *cell)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
 
@@ -3235,7 +3230,7 @@ cell_info_new (GtkTreeViewAccessible *accessible,
   g_object_weak_ref (G_OBJECT (cell), (GWeakNotify) cell_destroyed, cell_info);
 }
 
-static GailCell *
+static GtkCellAccessible *
 find_cell (GtkTreeViewAccessible *accessible,
            gint                   index)
 {
@@ -3249,7 +3244,7 @@ find_cell (GtkTreeViewAccessible *accessible,
 }
 
 static void
-refresh_cell_index (GailCell *cell)
+refresh_cell_index (GtkCellAccessible *cell)
 {
   GtkTreeViewAccessibleCellInfo *info;
   AtkObject *parent;
@@ -3645,18 +3640,18 @@ get_path_column_from_index (GtkTreeView        *tree_view,
 }
 
 static void
-set_cell_expandable (GailCell *cell)
+set_cell_expandable (GtkCellAccessible *cell)
 {
-  if (gail_cell_add_state (cell, ATK_STATE_EXPANDABLE, FALSE))
-    gail_cell_add_action (cell,
-                          "expand or contract",
-                          "expands or contracts the row in the tree view containing this cell",
-                          NULL, toggle_cell_expanded);
+  if (_gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDABLE, FALSE))
+    _gtk_cell_accessible_add_action (cell,
+                                     "expand or contract",
+                                     "expands or contracts the row in the tree view containing this cell",
+                                     NULL, toggle_cell_expanded);
 }
 
 static GtkTreeViewAccessibleCellInfo *
 find_cell_info (GtkTreeViewAccessible *accessible,
-                GailCell              *cell,
+                GtkCellAccessible     *cell,
                 gboolean               live_only)
 {
   GtkTreeViewAccessibleCellInfo *cell_info;
diff --git a/gtk/a11y/gtktreeviewaccessible.h b/gtk/a11y/gtktreeviewaccessible.h
index c8cd704..5de2619 100644
--- a/gtk/a11y/gtktreeviewaccessible.h
+++ b/gtk/a11y/gtktreeviewaccessible.h
@@ -22,7 +22,6 @@
 
 #include <gtk/gtk.h>
 #include "gtkcontaineraccessible.h"
-#include "gailcell.h"
 
 G_BEGIN_DECLS
 



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