Index: ChangeLog
===================================================================
RCS file: /export/src/cvs/gal/ChangeLog,v
retrieving revision 1.7
diff -u -r1.7 ChangeLog
--- ChangeLog	2003/10/14 18:00:13	1.7
+++ ChangeLog	2003/10/26 13:45:52
@@ -1,3 +1,10 @@
+2003-10-26  Tim Wo  <tim.wo@sun.com>
+
+	* gal/a11y/e-table/gal-a11y-e-cell.c (eti_grab_focus): new function
+	to deal with grabing table cell focus
+	(eti_atk_component_iface_init): Override "grab_focus" virtual function
+	with eti_grab_focus of AtkComponent interface
+
 2003-10-14  Suresh Chandrasekharan  <suresh.chandrasekharan@sun.com>
 	
 	* Support for preedit in e-text widgets.
Index: gal/a11y/e-table/gal-a11y-e-cell.c
===================================================================
RCS file: /export/src/cvs/gal/gal/a11y/e-table/gal-a11y-e-cell.c,v
retrieving revision 1.2
diff -u -r1.2 gal-a11y-e-cell.c
--- gal/a11y/e-table/gal-a11y-e-cell.c	2003/10/11 03:06:32	1.2
+++ gal/a11y/e-table/gal-a11y-e-cell.c	2003/10/26 13:45:52
@@ -11,6 +11,7 @@
 #include "gal-a11y-util.h"
 #include <atk/atkobject.h>
 #include <atk/atkcomponent.h>
+#include "gal/e-table/e-table.h"
 
 #define CS_CLASS(a11y) (G_TYPE_INSTANCE_GET_CLASS ((a11y), C_TYPE_STREAM, GalA11yECellClass))
 static GObjectClass *parent_class;
@@ -111,12 +112,33 @@
 		*y += yval;
 }
 
+static gboolean
+eti_grab_focus (AtkComponent *component)
+{
+	GalA11yECell *a11y;
+	gint view_row;
+	GtkWidget *e_table, *toplevel;
+
+	a11y = GAL_A11Y_E_CELL (component);
+	e_table = gtk_widget_get_parent (GNOME_CANVAS_ITEM (a11y->item)->canvas);
+	view_row = e_table_view_to_model_row (E_TABLE (e_table), a11y->row);
+
+	e_selection_model_clear (a11y->item->selection);
+	e_selection_model_select_single_row (a11y->item->selection, view_row);
+
+	gtk_widget_grab_focus (e_table);
+	toplevel = gtk_widget_get_toplevel (e_table);
+	if (GTK_WIDGET_TOPLEVEL (toplevel))
+		gtk_window_present (toplevel);
+}
+
 /* Table IFace */
 
 static void
 eti_atk_component_iface_init (AtkComponentIface *iface)
 {
 	iface->get_extents = eti_get_extents;
+	iface->grab_focus  = eti_grab_focus;
 }
 
 static void
