a11y: Add _gtk_cell_accessible_parent_get_child_index()
This will soon replace the shenanigans we do to keep the index of cells current.
This commit is contained in:
@ -91,8 +91,18 @@ static gint
|
|||||||
gtk_cell_accessible_get_index_in_parent (AtkObject *obj)
|
gtk_cell_accessible_get_index_in_parent (AtkObject *obj)
|
||||||
{
|
{
|
||||||
GtkCellAccessible *cell;
|
GtkCellAccessible *cell;
|
||||||
|
AtkObject *parent;
|
||||||
|
int index;
|
||||||
|
|
||||||
cell = GTK_CELL_ACCESSIBLE (obj);
|
cell = GTK_CELL_ACCESSIBLE (obj);
|
||||||
|
parent = gtk_widget_get_accessible (cell->widget);
|
||||||
|
if (parent == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
index = _gtk_cell_accessible_parent_get_child_index (GTK_CELL_ACCESSIBLE_PARENT (parent), cell);
|
||||||
|
if (index >= 0)
|
||||||
|
return index;
|
||||||
|
|
||||||
if (atk_state_set_contains_state (cell->state_set, ATK_STATE_STALE) &&
|
if (atk_state_set_contains_state (cell->state_set, ATK_STATE_STALE) &&
|
||||||
cell->refresh_index != NULL)
|
cell->refresh_index != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -95,3 +95,19 @@ _gtk_cell_accessible_parent_grab_focus (GtkCellAccessibleParent *parent,
|
|||||||
else
|
else
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_gtk_cell_accessible_parent_get_child_index (GtkCellAccessibleParent *parent,
|
||||||
|
GtkCellAccessible *cell)
|
||||||
|
{
|
||||||
|
GtkCellAccessibleParentIface *iface;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GTK_IS_CELL_ACCESSIBLE_PARENT (parent), FALSE);
|
||||||
|
|
||||||
|
iface = GTK_CELL_ACCESSIBLE_PARENT_GET_IFACE (parent);
|
||||||
|
|
||||||
|
if (iface->get_child_index)
|
||||||
|
return (iface->get_child_index) (parent, cell);
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|||||||
@ -58,6 +58,8 @@ struct _GtkCellAccessibleParentIface
|
|||||||
GdkRectangle *cell_rect);
|
GdkRectangle *cell_rect);
|
||||||
gboolean ( *grab_focus) (GtkCellAccessibleParent *parent,
|
gboolean ( *grab_focus) (GtkCellAccessibleParent *parent,
|
||||||
GtkCellAccessible *cell);
|
GtkCellAccessible *cell);
|
||||||
|
int ( *get_child_index) (GtkCellAccessibleParent *parent,
|
||||||
|
GtkCellAccessible *cell);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType _gtk_cell_accessible_parent_get_type (void);
|
GType _gtk_cell_accessible_parent_get_type (void);
|
||||||
@ -74,6 +76,8 @@ void _gtk_cell_accessible_parent_get_cell_area (GtkCellAccessibleParent *
|
|||||||
GdkRectangle *cell_rect);
|
GdkRectangle *cell_rect);
|
||||||
gboolean _gtk_cell_accessible_parent_grab_focus (GtkCellAccessibleParent *parent,
|
gboolean _gtk_cell_accessible_parent_grab_focus (GtkCellAccessibleParent *parent,
|
||||||
GtkCellAccessible *cell);
|
GtkCellAccessible *cell);
|
||||||
|
int _gtk_cell_accessible_parent_get_child_index (GtkCellAccessibleParent *parent,
|
||||||
|
GtkCellAccessible *cell);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user