/* atk table */ static AtkObject * eti_ref_at (AtkTable *table, gint row, gint column) { ETableItem *item; AtkObject * ret; GalA11yETableItemPrivate *priv = GET_PRIVATE (table); if (atk_state_set_contains_state (priv->state_set, ATK_STATE_DEFUNCT)) return NULL; item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table))); if (!item) return NULL; if (column >= 0 && column < item->cols && row >= 0 && row < item->rows && item->cell_views_realized) { ECellView *cell_view = item->cell_views[column]; ETableCol *ecol = e_table_header_get_column (item->header, column); ret = gal_a11y_e_cell_registry_get_object ( NULL, item, cell_view, ATK_OBJECT (table), ecol->spec->model_col, column, row); if (ATK_IS_OBJECT (ret)) { g_object_weak_ref ( G_OBJECT (ret), (GWeakNotify) cell_destroyed, ret); /* if current cell is focused, add FOCUSED state */ if (e_selection_model_cursor_row (item->selection) == GAL_A11Y_E_CELL (ret)->row && e_selection_model_cursor_col (item->selection) == GAL_A11Y_E_CELL (ret)->model_col) gal_a11y_e_cell_add_state ( GAL_A11Y_E_CELL (ret), ATK_STATE_FOCUSED, FALSE); } else ret = NULL; return ret; } return NULL; }
static AtkObject * ecv_ref_child (AtkObject *a11y, gint i) { GalA11yECellVbox *gaev = GAL_A11Y_E_CELL_VBOX (a11y); GalA11yECell *gaec = GAL_A11Y_E_CELL (a11y); ECellVboxView *ecvv = (ECellVboxView *) (gaec->cell_view); AtkObject *ret; if (i < gaev->a11y_subcell_count) { if (gaev->a11y_subcells[i] == NULL) { ECellView *subcell_view; gint model_col, row; row = gaec->row; model_col = ecvv->model_cols[i]; subcell_view = ecvv->subcell_views[i]; /* FIXME Should the view column use a fake * one or the same as its parent? */ ret = gal_a11y_e_cell_registry_get_object ( NULL, gaec->item, subcell_view, a11y, model_col, gaec->view_col, row); gaev->a11y_subcells[i] = ret; g_object_ref (ret); g_object_weak_ref ( G_OBJECT (ret), (GWeakNotify) subcell_destroyed, ret); } else { ret = (AtkObject *) gaev->a11y_subcells[i]; if (ATK_IS_OBJECT (ret)) g_object_ref (ret); else ret = NULL; } } else { ret = NULL; } return ret; }