diff options
author | Bolian Yin <bolian.yin@sun.com> | 2003-12-02 16:25:17 +0800 |
---|---|---|
committer | Bolian Yin <byin@src.gnome.org> | 2003-12-02 16:25:17 +0800 |
commit | c0f6402330d326d99e79d30c4429f27e83ff7301 (patch) | |
tree | 0e69de28631d969011812a215d8bceab9c3994ff | |
parent | 23eb43d17246238f87ea18157c9355829f2c8607 (diff) | |
download | gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar.gz gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar.bz2 gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar.lz gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar.xz gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.tar.zst gsoc2013-evolution-c0f6402330d326d99e79d30c4429f27e83ff7301.zip |
Fixes #51145
2003-12-02 Bolian Yin <bolian.yin@sun.com>
Fixes #51145
* gal/a11y/gal-a11y-e-table-item (eti_get_column_header): new impl.
(eti_ref_child): add column headers as children
svn path=/trunk/; revision=23574
-rw-r--r-- | a11y/e-table/gal-a11y-e-table-item.c | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/a11y/e-table/gal-a11y-e-table-item.c b/a11y/e-table/gal-a11y-e-table-item.c index bd34a87006..fcfa1cc0e6 100644 --- a/a11y/e-table/gal-a11y-e-table-item.c +++ b/a11y/e-table/gal-a11y-e-table-item.c @@ -138,7 +138,7 @@ eti_get_n_children (AtkObject *accessible) } static AtkObject* -eti_ref_child (AtkObject *accessible, gint i) +eti_ref_child (AtkObject *accessible, gint index) { AtkGObjectAccessible *atk_gobj; ETableItem *item; @@ -149,8 +149,19 @@ eti_ref_child (AtkObject *accessible, gint i) if (!item) return NULL; - col = i % item->cols; - row = i / item->cols; + if (index < item->cols) { + AtkObject *child; + + /* A column header is required */ + child = atk_table_get_column_header (ATK_TABLE (accessible), index); + if (child) + g_object_ref (child); + return child; + } + + index -= item->cols; + col = index % item->cols; + row = index / item->cols; return atk_table_ref_at (ATK_TABLE (accessible), row, col); } @@ -447,11 +458,22 @@ eti_get_column_description (AtkTable *table, } static AtkObject * -eti_get_column_header (AtkTable *table, - gint column) +eti_get_column_header (AtkTable *table, gint column) { - /* Unimplemented */ - return NULL; + ETableItem *item; + ETableCol *ecol; + AtkObject *atk_obj = NULL; + ECell *ecell; + + item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table))); + if (!item) + return NULL; + + ecol = e_table_header_get_column (item->header, column); + ecell = ecol->ecell; + if (ecell) + atk_obj = atk_gobject_accessible_for_object (G_OBJECT (ecell)); + return atk_obj; } static G_CONST_RETURN gchar * @@ -939,9 +961,11 @@ static void eti_a11y_selection_model_removed_cb (ETableItem *eti, static void eti_a11y_selection_model_added_cb (ETableItem *eti, ESelectionModel *selection, gpointer data); -static void eti_a11y_selection_changed_cb (ESelectionModel *selection, GalA11yETableItem *a11y); +static void eti_a11y_selection_changed_cb (ESelectionModel *selection, + GalA11yETableItem *a11y); static void eti_a11y_cursor_changed_cb (ESelectionModel *selection, - int row, int col, GalA11yETableItem *a11y); + int row, int col, + GalA11yETableItem *a11y); /** * gal_a11y_e_table_item_get_type: |