From 71011f3e1eb9fad5bd38af756fa34d764319afb0 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 11 Nov 2011 20:11:50 +0100 Subject: [PATCH] a11y: Implement find_cell_info() using qdata lookup That should be orders of magnitude faster then iterating over a hash table. --- gtk/a11y/gtktreeviewaccessible.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/gtk/a11y/gtktreeviewaccessible.c b/gtk/a11y/gtktreeviewaccessible.c index cd0390bb06..c27b5eee3d 100644 --- a/gtk/a11y/gtktreeviewaccessible.c +++ b/gtk/a11y/gtktreeviewaccessible.c @@ -3605,16 +3605,14 @@ find_cell_info (GtkTreeViewAccessible *accessible, gboolean live_only) { GtkTreeViewAccessibleCellInfo *cell_info; - GHashTableIter iter; - /* Clean GtkTreeViewAccessibleCellInfo data */ - g_hash_table_iter_init (&iter, accessible->cell_info_by_index); - while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &cell_info)) - { - if (cell_info->cell == cell && (!live_only || cell_info->in_use)) - return cell_info; - } - return NULL; + cell_info = g_object_get_qdata (G_OBJECT (cell), + gtk_tree_view_accessible_get_data_quark ()); + + if (live_only && cell_info && !cell_info->in_use) + cell_info = NULL; + + return cell_info; } static AtkObject *