[gtk+] a11y: Unify column-by-index getting
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] a11y: Unify column-by-index getting
- Date: Wed, 16 Nov 2011 03:43:55 +0000 (UTC)
commit 504128616663248dd92a39534ceb05fb68e82cf3
Author: Benjamin Otte <otte redhat com>
Date: Wed Nov 16 02:40:49 2011 +0100
a11y: Unify column-by-index getting
We are only ever interested in visible columns. Invisible columns do not
exist for all a11y cares.
gtk/a11y/gtktreeviewaccessible.c | 77 ++++++++++++++++----------------------
1 files changed, 32 insertions(+), 45 deletions(-)
---
diff --git a/gtk/a11y/gtktreeviewaccessible.c b/gtk/a11y/gtktreeviewaccessible.c
index a0b5727..9457cfc 100644
--- a/gtk/a11y/gtktreeviewaccessible.c
+++ b/gtk/a11y/gtktreeviewaccessible.c
@@ -80,8 +80,6 @@ static void set_iter_nth_row (GtkTreeView
gint row);
static gint get_row_from_tree_path (GtkTreeView *tree_view,
GtkTreePath *path);
-static GtkTreeViewColumn* get_column (GtkTreeView *tree_view,
- gint in_col);
static void iterate_thru_children (GtkTreeView *tree_view,
GtkTreeModel *tree_model,
GtkTreePath *tree_path,
@@ -536,6 +534,28 @@ gtk_tree_view_accessible_get_n_children (AtkObject *obj)
return (get_n_rows (tree_view) + 1) * get_n_columns (tree_view);
}
+static GtkTreeViewColumn *
+get_visible_column (GtkTreeView *tree_view,
+ guint id)
+{
+ guint i;
+
+ for (i = 0; i < gtk_tree_view_get_n_columns (tree_view); i++)
+ {
+ GtkTreeViewColumn *column = gtk_tree_view_get_column (tree_view, i);
+
+ if (!gtk_tree_view_column_get_visible (column))
+ continue;
+
+ if (id == 0)
+ return column;
+
+ id--;
+ }
+
+ g_return_val_if_reached (NULL);
+}
+
static AtkObject *
gtk_tree_view_accessible_ref_child (AtkObject *obj,
gint i)
@@ -574,7 +594,7 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
tree_view = GTK_TREE_VIEW (widget);
if (i < get_n_columns (tree_view))
{
- tv_col = gtk_tree_view_get_column (tree_view, i);
+ tv_col = get_visible_column (tree_view, i);
child = get_header_from_column (tv_col);
if (child)
g_object_ref (child);
@@ -1201,7 +1221,10 @@ gtk_tree_view_accessible_get_column_header (AtkTable *table,
return NULL;
tree_view = GTK_TREE_VIEW (widget);
- tv_col = get_column (tree_view, in_col);
+ if (in_col < 0 || in_col >= get_n_columns (tree_view))
+ return NULL;
+
+ tv_col = get_visible_column (tree_view, in_col);
return get_header_from_column (tv_col);
}
@@ -1218,10 +1241,10 @@ gtk_tree_view_accessible_get_column_description (AtkTable *table,
return NULL;
tree_view = GTK_TREE_VIEW (widget);
- tv_col = get_column (tree_view, in_col);
- if (tv_col == NULL)
- return NULL;
+ if (in_col < 0 || in_col >= get_n_columns (tree_view))
+ return NULL;
+ tv_col = get_visible_column (tree_view, in_col);
return gtk_tree_view_column_get_title (tv_col);
}
@@ -2438,42 +2461,6 @@ get_row_from_tree_path (GtkTreeView *tree_view,
/* Misc Private */
-/*
- * Get the specified GtkTreeViewColumn in the GtkTreeView.
- * Only visible columns are considered.
- */
-static GtkTreeViewColumn *
-get_column (GtkTreeView *tree_view,
- gint in_col)
-{
- GtkTreeViewColumn *tv_col;
- gint n_cols = -1;
- gint i = 0;
-
- if (in_col < 0)
- {
- g_warning ("Request for invalid column %d\n", in_col);
- return NULL;
- }
-
- tv_col = gtk_tree_view_get_column (tree_view, i);
- while (tv_col != NULL)
- {
- if (gtk_tree_view_column_get_visible (tv_col))
- n_cols++;
- if (in_col == n_cols)
- break;
- tv_col = gtk_tree_view_get_column (tree_view, ++i);
- }
-
- if (in_col != n_cols)
- {
- g_warning ("Request for invalid column %d\n", in_col);
- return NULL;
- }
- return tv_col;
-}
-
/* Helper recursive function that returns an iter to nth row
*/
static GtkTreeIter *
@@ -3022,7 +3009,7 @@ find_cell (GtkTreeViewAccessible *accessible,
{
g_assert_not_reached ();
}
- lookup.cell_col_ref = gtk_tree_view_get_column (tree_view, index % get_n_columns (tree_view));
+ lookup.cell_col_ref = get_visible_column (tree_view, index % get_n_columns (tree_view));
cell_info = g_hash_table_lookup (accessible->cell_infos, &lookup);
if (cell_info == NULL)
@@ -3215,7 +3202,7 @@ get_rbtree_column_from_index (GtkTreeView *tree_view,
if (column)
{
- *column = gtk_tree_view_get_column (tree_view, index % n_columns);
+ *column = get_visible_column (tree_view, index % n_columns);
if (*column == NULL)
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]