[evolution-patches] gal, accessibility,focused objects should have a state of ATK_STATE_FOCUSED,55249
- From: Yuedong Du <yuedong du sun com>
- To: evolution-patches lists ximian com, Mike Kestner <mkestner ximian com>
- Subject: [evolution-patches] gal, accessibility,focused objects should have a state of ATK_STATE_FOCUSED,55249
- Date: Mon, 29 Mar 2004 20:29:27 +0800
Hi Mike and all,
The bug cause gnopernicus cannot read mail in gnome2.6. This is because
in gnopernicus > 0.71,
the focus object must have state FOCUS, or it will not be read.
So the fix is just to add the state. Also add some sanity check code,
Regards
York
Index: gal-a11y-e-cell-text.c
===================================================================
RCS file: /cvs/gnome/gal/gal/a11y/e-table/gal-a11y-e-cell-text.c,v
retrieving revision 1.4
diff -u -r1.4 gal-a11y-e-cell-text.c
--- gal-a11y-e-cell-text.c 2 Dec 2003 07:20:04 -0000 1.4
+++ gal-a11y-e-cell-text.c 29 Mar 2004 12:24:56 -0000
@@ -107,9 +107,12 @@
ect_get_caret_offset (AtkText *text)
{
GalA11yECell *gaec = GAL_A11Y_E_CELL (text);
- ECellText *ect = E_CELL_TEXT (gaec->cell_view->ecell);
+ ECellText *ect = NULL;
gint start, end;
+ g_return_val_if_fail (gaec && gaec->cell_view && gaec->cell_view->ecell && E_IS_CELL_TEXT (gaec->cell_view->ecell), -1);
+ ect = E_CELL_TEXT (gaec->cell_view->ecell);
+
if (e_cell_text_get_selection (gaec->cell_view,
gaec->view_col, gaec->row,
&start, &end)) {
Index: gal-a11y-e-table-item.c
===================================================================
RCS file: /cvs/gnome/gal/gal/a11y/e-table/gal-a11y-e-table-item.c,v
retrieving revision 1.9
diff -u -r1.9 gal-a11y-e-table-item.c
--- gal-a11y-e-table-item.c 2 Dec 2003 08:25:17 -0000 1.9
+++ gal-a11y-e-table-item.c 29 Mar 2004 12:24:58 -0000
@@ -1035,8 +1035,10 @@
int index_in_parent)
{
GalA11yETableItem *a11y;
+ AtkObject *accessible;
int n;
+ g_return_val_if_fail (item && item->cols >= 0 && item->rows >= 0, NULL);
a11y = g_object_new (gal_a11y_e_table_item_get_type (), NULL);
atk_object_initialize (ATK_OBJECT (a11y), item);
@@ -1044,7 +1046,9 @@
GET_PRIVATE (a11y)->parent = parent;
GET_PRIVATE (a11y)->index_in_parent = index_in_parent;
- g_return_val_if_fail (item->cols >= 0 && item->rows >= 0, NULL);
+
+ accessible = ATK_OBJECT(a11y);
+ accessible->role = ATK_ROLE_TREE_TABLE;
/* Initialize cell data. */
n = item->cols * item->rows;
GET_PRIVATE (a11y)->cols = item->cols;
@@ -1187,10 +1191,12 @@
g_signal_emit_by_name (a11y, "selection_changed");
cell = atk_table_ref_at (ATK_TABLE (a11y), row, col);
- if (ATK_IS_OBJECT (cell))
- g_signal_emit_by_name (a11y,
- "active-descendant-changed",
- cell);
+ if (cell != NULL) {
+ if (ATK_IS_OBJECT (cell)) {
+ gal_a11y_e_cell_add_state(cell, ATK_STATE_FOCUSED, FALSE);
+ atk_focus_tracker_notify (cell);
+ }
+ }
}
/* atk selection */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]