[evolution-patches] gal, accessibility for etableclicktoadd



Patch resend, it fix 51917


Hi Mike,


This patch is for a11y of ETableClickToAdd. Please review.

Modification in clicktoadd.diff just atk_register in clicktoadd's
class_init;

And in clicktoadd-a11y.diff. I added files corresponding to clicktoadd's
a11y
and its factory.

clicktoadd's a11y object has a child. It may be the rectangle with
mesage "click
here to add" or a table row. By listen to canvas item's event, and found
what
actually happen.  If user click the  mesage area, the area will change to
table row. So we may emit "children_changed" signal to clicktoadd.






Regards
York



? 
? .deps
? .libs
? Makefile
? Makefile.in
? gal-a11y-e-cell-popup.lo
? gal-a11y-e-cell-registry.c.00.rtl
? gal-a11y-e-cell-registry.lo
? gal-a11y-e-cell-text.c.00.rtl
? gal-a11y-e-cell-text.lo
? gal-a11y-e-cell-toggle.c.00.rtl
? gal-a11y-e-cell-toggle.lo
? gal-a11y-e-cell-tree.lo
? gal-a11y-e-cell.c.00.rtl
? gal-a11y-e-cell.lo
? gal-a11y-e-table-click-to-add-factory.lo
? gal-a11y-e-table-click-to-add.lo
? gal-a11y-e-table-factory.c.00.rtl
? gal-a11y-e-table-factory.lo
? gal-a11y-e-table-item-factory.c.00.rtl
? gal-a11y-e-table-item-factory.lo
? gal-a11y-e-table-item.c.00.rtl
? gal-a11y-e-table-item.c.sv
? gal-a11y-e-table-item.lo
? gal-a11y-e-table.c.00.rtl
? gal-a11y-e-table.lo
? gal-a11y-e-tree-factory.c.00.rtl
? gal-a11y-e-tree-factory.lo
? gal-a11y-e-tree.c.00.rtl
? gal-a11y-e-tree.lo
? libgal-a11y-etable.la
Index: Makefile.am
===================================================================
RCS file: /export/src/cvs/gal/gal/a11y/e-table/Makefile.am,v
retrieving revision 1.5
diff -u -r1.5 Makefile.am
--- Makefile.am	2003/12/05 13:38:26	1.5
+++ Makefile.am	2003/12/08 10:37:01
@@ -22,6 +22,8 @@
 	gal-a11y-e-table.c			\
 	gal-a11y-e-table-item.c			\
 	gal-a11y-e-table-item-factory.c		\
+	gal-a11y-e-table-click-to-add.c		\
+	gal-a11y-e-table-click-to-add-factory.c	\
 	gal-a11y-e-table-factory.c
 
 libgal_a11y_etableincludedir = $(includedir)/gal-$(GAL_API_VERSION)/gal/a11y/e-table
@@ -37,5 +39,7 @@
 	gal-a11y-e-cell-registry.h		\
 	gal-a11y-e-table.h			\
 	gal-a11y-e-table-item.h			\
+	gal-a11y-e-table-click-to-add-factory.h	\
+	gal-a11y-e-table-click-to-add.h		\
 	gal-a11y-e-table-item-factory.h		\
 	gal-a11y-e-table-factory.h
Index: gal-a11y-e-table-click-to-add-factory.c
===================================================================
RCS file: gal-a11y-e-table-click-to-add-factory.c
diff -N gal-a11y-e-table-click-to-add-factory.c
--- /dev/null	Mon Dec  8 18:31:44 2003
+++ gal-a11y-e-table-click-to-add-factory.c	Mon Dec  8 18:37:01 2003
@@ -0,0 +1,88 @@
+/*
+ * Authors: Yuedong Du <yuedong du sun com>
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ */
+
+#include <config.h>
+#include "gal-a11y-e-table-click-to-add-factory.h"
+#include "gal-a11y-e-table-click-to-add.h"
+#include "gal-a11y-e-table.h"
+#include <gal/e-table/e-table.h>
+#include <gal/e-table/e-table-click-to-add.h>
+#include <atk/atk.h>
+
+
+#define CS_CLASS(factory) (G_TYPE_INSTANCE_GET_CLASS ((factory), C_TYPE_STREAM, GalA11yETableClickToAddFactoryClass))
+static AtkObjectFactoryClass *parent_class;
+#define PARENT_TYPE (ATK_TYPE_OBJECT_FACTORY)
+
+/* Static functions */
+
+static GType
+gal_a11y_e_table_click_to_add_factory_get_accessible_type (void)
+{
+        return GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD;
+}
+
+static AtkObject*
+gal_a11y_e_table_click_to_add_factory_create_accessible (GObject *obj)
+{
+	AtkObject * atk_object;
+
+	g_return_if_fail (E_IS_TABLE_CLICK_TO_ADD(obj));
+
+	atk_object = gal_a11y_e_table_click_to_add_new (obj);
+
+	return atk_object;
+}
+
+static void
+gal_a11y_e_table_click_to_add_factory_class_init (GalA11yETableClickToAddFactoryClass *klass)
+{
+	AtkObjectFactoryClass *factory_class = ATK_OBJECT_FACTORY_CLASS (klass);
+
+	parent_class = g_type_class_ref (PARENT_TYPE);
+
+	factory_class->create_accessible   = gal_a11y_e_table_click_to_add_factory_create_accessible;
+	factory_class->get_accessible_type = gal_a11y_e_table_click_to_add_factory_get_accessible_type;
+}
+
+static void
+gal_a11y_e_table_click_to_add_factory_init (GalA11yETableClickToAddFactory *factory)
+{
+}
+
+/**
+ * gal_a11y_e_table_factory_get_type:
+ * @void: 
+ * 
+ * Registers the &GalA11yETableFactory class if necessary, and returns the type ID
+ * associated to it.
+ * 
+ * Return value: The type ID of the &GalA11yETableFactory class.
+ **/
+GType
+gal_a11y_e_table_click_to_add_factory_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		GTypeInfo info = {
+			sizeof (GalA11yETableClickToAddFactoryClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) gal_a11y_e_table_click_to_add_factory_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL, /* class_data */
+			sizeof (GalA11yETableClickToAddFactory),
+			0,
+			(GInstanceInitFunc) gal_a11y_e_table_click_to_add_factory_init,
+			NULL /* value_table */
+		};
+
+		type = g_type_register_static (PARENT_TYPE, "GalA11yETableClickToAddFactory", &info, 0);
+	}
+
+	return type;
+}
Index: gal-a11y-e-table-click-to-add-factory.h
===================================================================
RCS file: gal-a11y-e-table-click-to-add-factory.h
diff -N gal-a11y-e-table-click-to-add-factory.h
--- /dev/null	Mon Dec  8 18:31:44 2003
+++ gal-a11y-e-table-click-to-add-factory.h	Mon Dec  8 18:37:01 2003
@@ -0,0 +1,34 @@
+/*
+ * Authors: *   Yuedong Du <yuedong du sun com>
+ *
+ * Copyright (C) 2003 Ximian, Inc.
+ */
+
+#ifndef __GAL_A11Y_E_TABLE_CLICK_TO_ADD_FACTORY_H__
+#define __GAL_A11Y_E_TABLE_CLICK_TO_ADD_FACTORY_H__
+
+#include <glib-object.h>
+#include <atk/atkobjectfactory.h>
+
+#define GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD_FACTORY            (gal_a11y_e_table_item_factory_get_type ())
+#define GAL_A11Y_E_TABLE_CLICK_TO_ADD_FACTORY(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD_FACTORY, GalA11yETableClickToAddFactory))
+#define GAL_A11Y_E_TABLE_CLICK_TO_ADD_FACTORY_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD_FACTORY, GalA11yETableClickToAddFactoryClass))
+#define GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD_FACTORY(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD_FACTORY))
+#define GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD_FACTORY))
+
+typedef struct _GalA11yETableClickToAddFactory GalA11yETableClickToAddFactory;
+typedef struct _GalA11yETableClickToAddFactoryClass GalA11yETableClickToAddFactoryClass;
+
+struct _GalA11yETableClickToAddFactory {
+	AtkObject object;
+};
+
+struct _GalA11yETableClickToAddFactoryClass {
+	AtkObjectClass parent_class;
+};
+
+
+/* Standard Glib function */
+GType              gal_a11y_e_table_click_to_add_factory_get_type (void);
+
+#endif
Index: gal-a11y-e-table-click-to-add.c
===================================================================
RCS file: gal-a11y-e-table-click-to-add.c
diff -N gal-a11y-e-table-click-to-add.c
--- /dev/null	Mon Dec  8 18:31:44 2003
+++ gal-a11y-e-table-click-to-add.c	Mon Dec  8 18:37:01 2003
@@ -0,0 +1,270 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Yuedong Du <yuedong du sun com>
+ *
+ * Copyright (C) 2002 Ximian, Inc.
+ */
+
+#include <config.h>
+#include "gal-a11y-util.h"
+#include "gal-a11y-e-table-click-to-add.h"
+#include <gal/e-table/e-table-group.h>
+#include <gal/e-table/e-table-group-leaf.h>
+#include <gal/e-table/e-table-click-to-add.h>
+#include <atk/atkcomponent.h>
+#include <atk/atkaction.h>
+
+static AtkObjectClass *parent_class;
+static GType parent_type;
+static gint priv_offset;
+#define GET_PRIVATE(object) ((GalA11yETableClickToAddPrivate *) (((char *) object) + priv_offset))
+#define PARENT_TYPE (parent_type)
+
+struct _GalA11yETableClickToAddPrivate {
+	gpointer rect;
+	gpointer row;
+};
+
+
+static gint
+etcta_get_n_actions (AtkAction *action)
+{
+	return 1;
+}
+
+static G_CONST_RETURN gchar*
+etcta_get_description (AtkAction *action,
+                             gint      i)
+{
+	if (i == 0)
+		return "click to add";
+
+	return NULL;
+}
+
+static G_CONST_RETURN gchar*
+etcta_action_get_name (AtkAction *action, gint      i)
+{
+	if (i == 0)
+		return "click";
+
+	return NULL;
+}
+
+
+static gboolean
+idle_do_action (gpointer data)
+{
+        GdkEventButton event;
+	ETableClickToAdd * etcta;
+        gint x, y, width, height, finished;
+
+	g_return_val_if_fail ( data!= NULL, FALSE);
+
+	etcta = atk_gobject_accessible_get_object (ATK_OBJECT(data));
+	g_return_val_if_fail (etcta, FALSE);
+
+	event.x = 0;
+	event.y = 0;
+                                                                                
+        event.type = GDK_BUTTON_PRESS;
+        event.window = GTK_LAYOUT(GNOME_CANVAS_ITEM(etcta)->canvas)->bin_window;
+        event.button = 1;
+        event.send_event = TRUE;
+        event.time = GDK_CURRENT_TIME;
+        event.axes = NULL;
+                                                                                
+        g_signal_emit_by_name (etcta, "event", &event, &finished);
+
+	return FALSE;
+}
+
+static gboolean
+etcta_do_action (AtkAction * action, gint i)
+{
+	g_return_val_if_fail (i == 0, FALSE);
+
+	g_idle_add (idle_do_action, action);
+
+	return TRUE;
+}
+
+static void
+atk_action_interface_init (AtkActionIface *iface)
+{
+	g_return_if_fail (iface != NULL);
+                                                                                
+	iface->do_action = etcta_do_action;
+	iface->get_n_actions = etcta_get_n_actions;
+	iface->get_description = etcta_get_description;
+	iface->get_name = etcta_action_get_name;
+}
+
+
+static G_CONST_RETURN gchar *
+etcta_get_name (AtkObject *obj)
+{
+	g_return_val_if_fail (GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD (obj), NULL);
+
+	return "click to add";
+}
+
+static gint
+etcta_get_n_children (AtkObject *accessible)
+{
+	return 1;
+}
+
+static AtkObject*
+etcta_ref_child (AtkObject *accessible,
+		 gint i)
+{
+	AtkObject * atk_obj = NULL;
+	ETableClickToAdd * etcta;
+
+	if ( i != 0 )
+		return NULL;
+
+	etcta  = E_TABLE_CLICK_TO_ADD(atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible)));
+
+	g_return_if_fail (etcta);
+
+	if (etcta->rect) {
+		atk_obj = atk_gobject_accessible_for_object (G_OBJECT(etcta->rect));
+	} else if (etcta->row) {
+		atk_obj = atk_gobject_accessible_for_object (G_OBJECT(etcta->row));
+	}
+
+	g_object_ref (atk_obj);
+
+	return atk_obj;
+}
+
+static void
+etcta_class_init (GalA11yETableClickToAddClass *klass)
+{
+	AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass);
+
+	parent_class = g_type_class_ref (PARENT_TYPE);
+
+	atk_object_class->get_name = etcta_get_name;
+        atk_object_class->get_n_children = etcta_get_n_children;
+        atk_object_class->ref_child = etcta_ref_child;
+}
+
+static void
+etcta_init (GalA11yETableClickToAdd *a11y)
+{
+}
+
+/**
+ * gal_a11y_e_table_click_to_add_get_type:
+ * @void: 
+ * 
+ * Registers the &GalA11yETableClickToAdd class if necessary, and returns the type ID
+ * associated to it.
+ * 
+ * Return value: The type ID of the &GalA11yETableClickToAdd class.
+ **/
+GType
+gal_a11y_e_table_click_to_add_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		AtkObjectFactory *factory;
+
+		GTypeInfo info = {
+			sizeof (GalA11yETableClickToAddClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) etcta_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL, /* class_data */
+			sizeof (GalA11yETableClickToAdd),
+			0,
+			(GInstanceInitFunc) etcta_init,
+			NULL /* value_table */
+		};
+
+		static const GInterfaceInfo atk_action_info = {
+			(GInterfaceInitFunc) atk_action_interface_init,
+			(GInterfaceFinalizeFunc) NULL,
+			NULL
+		};
+
+                factory = atk_registry_get_factory (atk_get_default_registry (), GNOME_TYPE_CANVAS_ITEM);
+
+		parent_type = atk_object_factory_get_accessible_type (factory);
+                type = gal_a11y_type_register_static_with_private (PARENT_TYPE,
+				"GalA11yETableClickToAdd", &info, 0, 
+				sizeof(GalA11yETableClickToAddPrivate), &priv_offset);
+                                                                                
+                g_type_add_interface_static (type, ATK_TYPE_ACTION, &atk_action_info);
+
+	}
+
+	return type;
+}
+
+static gboolean
+etcta_event (GnomeCanvasItem *item, GdkEvent *e, gpointer data)
+{
+        ETableClickToAdd *etcta = E_TABLE_CLICK_TO_ADD (item);
+	GalA11yETableClickToAdd *a11y;
+	GalA11yETableClickToAddPrivate *priv;
+	
+	g_return_val_if_fail (item, TRUE);
+
+	g_return_val_if_fail (GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD(data), FALSE);
+	a11y = GAL_A11Y_E_TABLE_CLICK_TO_ADD (data);
+
+	priv = GET_PRIVATE (a11y);
+
+	/* rect replaced by row. */
+	if (etcta->rect == NULL && priv->rect != NULL) {
+		g_signal_emit_by_name (a11y, "children_changed::remove", 0, NULL, NULL);
+
+	}
+	/* row inserted, and/or replaced by a new row. */
+	if (etcta->row != NULL && priv->row == NULL) {
+		g_signal_emit_by_name (a11y, "children_changed::add", 0, NULL, NULL);
+	} else if (etcta->row != NULL && priv->row != NULL && etcta->row != priv->row) {
+		g_signal_emit_by_name (a11y, "children_changed::remove", 0, NULL, NULL);
+		g_signal_emit_by_name (a11y, "children_changed::add", 0, NULL, NULL);
+	}
+
+
+	priv->rect = etcta->rect;
+	priv->row = etcta->row;
+
+	return TRUE;
+}
+
+AtkObject *
+gal_a11y_e_table_click_to_add_new (GObject *widget)
+{
+	GalA11yETableClickToAdd *a11y;
+	ETableClickToAdd * etcta;
+	GalA11yETableClickToAddPrivate *priv;
+	gint id;
+
+	g_return_if_fail (widget != NULL);
+
+	a11y = g_object_new (gal_a11y_e_table_click_to_add_get_type (), NULL);
+	priv = GET_PRIVATE (a11y);
+
+	etcta = E_TABLE_CLICK_TO_ADD(widget);
+
+
+	atk_object_initialize (ATK_OBJECT (a11y), etcta);
+
+	priv->rect = etcta->rect;
+	priv->row = etcta->row;
+
+
+	g_signal_connect_after (G_OBJECT(widget), "event",
+	    			G_CALLBACK (etcta_event), a11y);
+
+	return ATK_OBJECT (a11y);
+}
Index: gal-a11y-e-table-click-to-add.h
===================================================================
RCS file: gal-a11y-e-table-click-to-add.h
diff -N gal-a11y-e-table-click-to-add.h
--- /dev/null	Mon Dec  8 18:31:44 2003
+++ gal-a11y-e-table-click-to-add.h	Mon Dec  8 18:37:01 2003
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+#ifndef __GAL_A11Y_E_TABLE_CLICK_TO_ADD_H__
+#define __GAL_A11Y_E_TABLE_CLICK_TO_ADD_H__
+
+#include <glib-object.h>
+#include <gal/e-table/e-table-item.h>
+#include <atk/atkgobjectaccessible.h>
+
+#define GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD            (gal_a11y_e_table_click_to_add_get_type ())
+#define GAL_A11Y_E_TABLE_CLICK_TO_ADD(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD, GalA11yETableClickToAdd))
+#define GAL_A11Y_E_TABLE_CLICK_TO_ADD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD, GalA11yETableClickToAddClass))
+#define GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD))
+#define GAL_A11Y_IS_E_TABLE_CLICK_TO_ADD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GAL_A11Y_TYPE_E_TABLE_CLICK_TO_ADD))
+
+typedef struct _GalA11yETableClickToAdd GalA11yETableClickToAdd;
+typedef struct _GalA11yETableClickToAddClass GalA11yETableClickToAddClass;
+typedef struct _GalA11yETableClickToAddPrivate GalA11yETableClickToAddPrivate;
+
+/* This struct should actually be larger as this isn't what we derive from.
+ * The GalA11yETableClickToAddPrivate comes right after the parent class structure.
+ **/
+struct _GalA11yETableClickToAdd {
+	AtkGObjectAccessible parent;
+};
+
+struct _GalA11yETableClickToAddClass {
+	AtkGObjectAccessibleClass parent_class;
+};
+
+/* Standard Glib function */
+GType      gal_a11y_e_table_click_to_add_get_type  (void);
+AtkObject *gal_a11y_e_table_click_to_add_new       (GObject *widget);
+
+#endif /* ! __GAL_A11Y_E_TABLE_CLICK_TO_ADD_H__ */
Index: gal-a11y-e-table-item-factory.c
===================================================================
RCS file: /export/src/cvs/gal/gal/a11y/e-table/gal-a11y-e-table-item-factory.c,v
retrieving revision 1.1
diff -u -r1.1 gal-a11y-e-table-item-factory.c
--- gal-a11y-e-table-item-factory.c	2003/10/11 03:06:32	1.1
+++ gal-a11y-e-table-item-factory.c	2003/12/08 10:37:01
@@ -28,20 +28,14 @@
 static AtkObject*
 gal_a11y_e_table_item_factory_create_accessible (GObject *obj)
 {
-	AtkObject * accessible;
+	AtkObject *accessible;
 	ETableItem * eti;
 	GnomeCanvas * gc;
 	GtkWidget * table;
 
 	g_return_if_fail (E_IS_TABLE_ITEM(obj));
-	eti = E_TABLE_ITEM(obj);
-	gc = GNOME_CANVAS_ITEM(eti)->canvas;
-
-	table = gtk_widget_get_parent(GTK_WIDGET(gc));
-
-	accessible = gtk_widget_get_accessible (table);
-	accessible = atk_object_ref_accessible_child (accessible, 0);
-
+	accessible = gal_a11y_e_table_item_new(NULL, obj, 0);
+                                                                                
 	return accessible;
 }
 
Index: gal-a11y-e-table.c
===================================================================
RCS file: /export/src/cvs/gal/gal/a11y/e-table/gal-a11y-e-table.c,v
retrieving revision 1.2
diff -u -r1.2 gal-a11y-e-table.c
--- gal-a11y-e-table.c	2003/10/11 03:06:33	1.2
+++ gal-a11y-e-table.c	2003/12/08 10:37:01
@@ -13,6 +13,7 @@
 #include <gal/e-table/e-table.h>
 #include <gal/e-table/e-table-group.h>
 #include <gal/e-table/e-table-group-leaf.h>
+#include <gal/e-table/e-table-click-to-add.h>
 
 #define CS_CLASS(a11y) (G_TYPE_INSTANCE_GET_CLASS ((a11y), C_TYPE_STREAM, GalA11yETableClass))
 static AtkObjectClass *parent_class;
@@ -33,7 +34,7 @@
 	GalA11yETablePrivate *priv = GET_PRIVATE (a11y);
 	ETable *table = E_TABLE (GTK_ACCESSIBLE (a11y)->widget);
 	if (priv->child_item == NULL) {
-		priv->child_item = gal_a11y_e_table_item_new (ATK_OBJECT (a11y), E_TABLE_GROUP_LEAF (table->group)->item, 0);
+		priv->child_item = atk_gobject_accessible_for_object (G_OBJECT(E_TABLE_GROUP_LEAF (table->group)->item));
 		priv->child_item->role = ATK_ROLE_TABLE;
 	}
 }
@@ -52,6 +53,14 @@
 static gint
 et_get_n_children (AtkObject *accessible)
 {
+	GalA11yETable *a11y = GAL_A11Y_E_TABLE (accessible);
+	ETable * et;
+
+	et = E_TABLE(GTK_ACCESSIBLE (a11y)->widget);
+	if (et && et->use_click_to_add) {
+		return 2;
+	}
+
 	return 1;
 }
 
@@ -60,11 +69,30 @@
 	      gint i)
 {
 	GalA11yETable *a11y = GAL_A11Y_E_TABLE (accessible);
-	if (i != 0)
-		return NULL;
-	init_child_item (a11y);
-	g_object_ref (GET_PRIVATE (a11y)->child_item);
-	return GET_PRIVATE (a11y)->child_item;
+	ETable * et;
+
+	et = E_TABLE(GTK_ACCESSIBLE (a11y)->widget);
+
+	if (i == 0) {
+		init_child_item (a11y);
+		g_object_ref (GET_PRIVATE (a11y)->child_item);
+		return GET_PRIVATE (a11y)->child_item;
+	} else if (i == 1) {
+        	AtkObject * accessible;
+		ETableClickToAdd * etcta;
+
+		if (et && et->use_click_to_add && et->click_to_add) {
+			etcta = E_TABLE_CLICK_TO_ADD(et->click_to_add);
+			if (etcta->rect) {
+				accessible = atk_gobject_accessible_for_object (G_OBJECT(etcta));
+			} else {
+				accessible = atk_gobject_accessible_for_object (G_OBJECT(etcta->row));
+			}
+			return accessible;
+		}
+	}
+
+	return NULL;
 }
 
 static void

? .deps
? .libs
? Makefile
? Makefile.in
? e-cell-checkbox.c.00.rtl
? e-cell-checkbox.lo
? e-cell-combo.c.00.rtl
? e-cell-combo.lo
? e-cell-date.c.00.rtl
? e-cell-date.lo
? e-cell-float.c.00.rtl
? e-cell-float.lo
? e-cell-number.c.00.rtl
? e-cell-number.lo
? e-cell-pixbuf.c.00.rtl
? e-cell-pixbuf.lo
? e-cell-popup.c.00.rtl
? e-cell-popup.lo
? e-cell-progress.c.00.rtl
? e-cell-progress.lo
? e-cell-size.c.00.rtl
? e-cell-size.lo
? e-cell-spin-button.c.00.rtl
? e-cell-spin-button.lo
? e-cell-text.c.00.rtl
? e-cell-text.lo
? e-cell-toggle.c.00.rtl
? e-cell-toggle.lo
? e-cell-tree.c.00.rtl
? e-cell-tree.lo
? e-cell-vbox.c.00.rtl
? e-cell-vbox.lo
? e-cell.c.00.rtl
? e-cell.lo
? e-table-click-to-add.c.00.rtl
? e-table-click-to-add.lo
? e-table-col.c.00.rtl
? e-table-col.lo
? e-table-column-specification.c.00.rtl
? e-table-column-specification.lo
? e-table-config.c.00.rtl
? e-table-config.lo
? e-table-extras.c.00.rtl
? e-table-extras.lo
? e-table-field-chooser-dialog.c.00.rtl
? e-table-field-chooser-dialog.lo
? e-table-field-chooser-item.c.00.rtl
? e-table-field-chooser-item.lo
? e-table-field-chooser.c.00.rtl
? e-table-field-chooser.lo
? e-table-group-container.c.00.rtl
? e-table-group-container.lo
? e-table-group-leaf.c.00.rtl
? e-table-group-leaf.lo
? e-table-group.c.00.rtl
? e-table-group.lo
? e-table-header-item.c.00.rtl
? e-table-header-item.lo
? e-table-header-utils.c.00.rtl
? e-table-header-utils.lo
? e-table-header.c.00.rtl
? e-table-header.lo
? e-table-item.c.00.rtl
? e-table-item.lo
? e-table-memory-callbacks.c.00.rtl
? e-table-memory-callbacks.lo
? e-table-memory-store.c.00.rtl
? e-table-memory-store.lo
? e-table-memory.c.00.rtl
? e-table-memory.lo
? e-table-model.c.00.rtl
? e-table-model.lo
? e-table-one.c.00.rtl
? e-table-one.lo
? e-table-scrolled.c.00.rtl
? e-table-scrolled.lo
? e-table-search.c.00.rtl
? e-table-search.lo
? e-table-selection-model.c.00.rtl
? e-table-selection-model.lo
? e-table-simple.c.00.rtl
? e-table-simple.lo
? e-table-sort-info.c.00.rtl
? e-table-sort-info.lo
? e-table-sorted-variable.c.00.rtl
? e-table-sorted-variable.lo
? e-table-sorted.c.00.rtl
? e-table-sorted.lo
? e-table-sorter.c.00.rtl
? e-table-sorter.lo
? e-table-sorting-utils.c.00.rtl
? e-table-sorting-utils.lo
? e-table-specification.c.00.rtl
? e-table-specification.lo
? e-table-state.c.00.rtl
? e-table-state.lo
? e-table-subset-variable.c.00.rtl
? e-table-subset-variable.lo
? e-table-subset.c.00.rtl
? e-table-subset.lo
? e-table-utils.c.00.rtl
? e-table-utils.lo
? e-table-without.c.00.rtl
? e-table-without.lo
? e-table.c.00.rtl
? e-table.lo
? e-tree-memory-callbacks.c.00.rtl
? e-tree-memory-callbacks.lo
? e-tree-memory.c.00.rtl
? e-tree-memory.lo
? e-tree-model.c.00.rtl
? e-tree-model.lo
? e-tree-scrolled.c.00.rtl
? e-tree-scrolled.lo
? e-tree-selection-model.c.00.rtl
? e-tree-selection-model.lo
? e-tree-sorted.c.00.rtl
? e-tree-sorted.lo
? e-tree-table-adapter.c.00.rtl
? e-tree-table-adapter.lo
? e-tree.c.00.rtl
? e-tree.lo
? libetable.la
Index: e-table-click-to-add.c
===================================================================
RCS file: /export/src/cvs/gal/gal/e-table/e-table-click-to-add.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 e-table-click-to-add.c
--- e-table-click-to-add.c	2003/09/26 06:37:14	1.1.1.1
+++ e-table-click-to-add.c	2003/12/08 10:32:40
@@ -39,6 +39,7 @@
 #include "gal/util/e-util.h"
 #include "gal/util/e-i18n.h"
 #include "gal/util/e-marshal.h"
+#include "gal/a11y/e-table/gal-a11y-e-table-click-to-add-factory.h"
 
 enum {
 	CURSOR_CHANGE,
@@ -494,6 +495,11 @@
 			      NULL, NULL,
 			      e_marshal_VOID__INT_INT,
 			      G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
+
+	atk_registry_set_factory_type (atk_get_default_registry (),
+					E_TABLE_CLICK_TO_ADD_TYPE,
+					gal_a11y_e_table_click_to_add_factory_get_type ());
+
 }
 
 static void



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