GtkCellRendererState state)
{
GtkTreeViewAccessible *accessible;
+ GtkTreeViewColumn *single_column;
AtkObject *obj;
guint i;
if (state == GTK_CELL_RENDERER_FOCUSED)
{
- GtkTreeViewColumn *focus_column;
-
- focus_column = get_effective_focus_column (treeview, _gtk_tree_view_get_focus_column (treeview));
+ single_column = get_effective_focus_column (treeview, _gtk_tree_view_get_focus_column (treeview));
+ }
+ else if (state == GTK_CELL_RENDERER_EXPANDED ||
+ state == GTK_CELL_RENDERER_EXPANDABLE)
+ {
+ single_column = gtk_tree_view_get_expander_column (treeview);
+ }
+ else
+ single_column = NULL;
- if (focus_column)
- {
- GtkCellAccessible *cell;
+ if (single_column)
+ {
+ GtkCellAccessible *cell = peek_cell (accessible,
+ tree, node,
+ single_column);
- cell = peek_cell (accessible, tree, node, focus_column);
- if (cell != NULL)
- _gtk_cell_accessible_state_changed (cell, 0, state);
- else
- cell = create_cell (treeview, accessible, tree, node, focus_column);
+ if (cell != NULL)
+ _gtk_cell_accessible_state_changed (cell, state, 0);
+ if (state == GTK_CELL_RENDERER_FOCUSED)
+ {
+ if (cell == NULL)
+ cell = create_cell (treeview, accessible, tree, node, single_column);
+
g_signal_emit_by_name (accessible, "active-descendant-changed", cell);
}
-
- return;
}
-
- for (i = 0; i < gtk_tree_view_get_n_columns (treeview); i++)
+ else
{
- GtkCellAccessible *cell = peek_cell (accessible,
- tree, node,
- gtk_tree_view_get_column (treeview, i));
+ for (i = 0; i < gtk_tree_view_get_n_columns (treeview); i++)
+ {
+ GtkCellAccessible *cell = peek_cell (accessible,
+ tree, node,
+ gtk_tree_view_get_column (treeview, i));
- if (cell == NULL)
- continue;
+ if (cell == NULL)
+ continue;
- _gtk_cell_accessible_state_changed (cell, state, 0);
+ _gtk_cell_accessible_state_changed (cell, state, 0);
+ }
}
if (state == GTK_CELL_RENDERER_SELECTED)
GtkCellRendererState state)
{
GtkTreeViewAccessible *accessible;
+ GtkTreeViewColumn *single_column;
AtkObject *obj;
guint i;
if (state == GTK_CELL_RENDERER_FOCUSED)
{
- GtkTreeViewColumn *focus_column;
-
- focus_column = get_effective_focus_column (treeview, _gtk_tree_view_get_focus_column (treeview));
-
- if (focus_column)
- {
- GtkCellAccessible *cell = peek_cell (accessible,
- tree, node,
- focus_column);
-
- if (cell != NULL)
- _gtk_cell_accessible_state_changed (cell, 0, state);
- }
-
- return;
+ single_column = get_effective_focus_column (treeview, _gtk_tree_view_get_focus_column (treeview));
+ }
+ else if (state == GTK_CELL_RENDERER_EXPANDED ||
+ state == GTK_CELL_RENDERER_EXPANDABLE)
+ {
+ single_column = gtk_tree_view_get_expander_column (treeview);
}
+ else
+ single_column = NULL;
- for (i = 0; i < gtk_tree_view_get_n_columns (treeview); i++)
+ if (single_column)
{
GtkCellAccessible *cell = peek_cell (accessible,
tree, node,
- gtk_tree_view_get_column (treeview, i));
+ single_column);
- if (cell == NULL)
- continue;
+ if (cell != NULL)
+ _gtk_cell_accessible_state_changed (cell, 0, state);
+ }
+ else
+ {
+ for (i = 0; i < gtk_tree_view_get_n_columns (treeview); i++)
+ {
+ GtkCellAccessible *cell = peek_cell (accessible,
+ tree, node,
+ gtk_tree_view_get_column (treeview, i));
+
+ if (cell == NULL)
+ continue;
- _gtk_cell_accessible_state_changed (cell, 0, state);
+ _gtk_cell_accessible_state_changed (cell, 0, state);
+ }
}
if (state == GTK_CELL_RENDERER_SELECTED)