]> Pileus Git - ~andy/gtk/commitdiff
Handle separate append/set for rows. Patch by Li Yuan
authorMatthias Clasen <matthiasc@src.gnome.org>
Sat, 13 Dec 2008 07:59:58 +0000 (07:59 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 13 Dec 2008 07:59:58 +0000 (07:59 +0000)
        * gtk/gtkiconview.c (gtk_icon_view_accessible_model_row_changed):
        Handle separate append/set for rows.  Patch by Li Yuan

svn path=/trunk/; revision=21884

ChangeLog
gtk/gtkiconview.c

index a12ea39ee28a1153c8e08131db7fce87402dae4b..0aac0645c8d058d3a04d27c435fe52cfcaf3e825 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-12-13  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 549251 – GTK icon view accessible issue.
+
+       * gtk/gtkiconview.c (gtk_icon_view_accessible_model_row_changed):
+       Handle separate append/set for rows.  Patch by Li Yuan
+
 2008-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        Bug 556839 – Crash when opening a link
index f22f70b78b2e1c49c497a0cb0a694b810953e1d7..8b095997f3a214c163d55f18ae98a44bda312fd0 100644 (file)
@@ -8872,11 +8872,39 @@ static void
 gtk_icon_view_accessible_model_row_changed (GtkTreeModel *tree_model,
                                             GtkTreePath  *path,
                                             GtkTreeIter  *iter,
-                                            gpointer     user_data)
+                                            gpointer      user_data)
 {
   AtkObject *atk_obj;
+  gint index;
+  GtkWidget *widget;
+  GtkIconView *icon_view;
+  GtkIconViewItem *item;
+  GtkIconViewAccessible *a11y_view;
+  GtkIconViewItemAccessible *a11y_item;
+  gchar *name, *text;
 
   atk_obj = gtk_widget_get_accessible (GTK_WIDGET (user_data));
+  a11y_view = GTK_ICON_VIEW_ACCESSIBLE (atk_obj);
+  index = gtk_tree_path_get_indices(path)[0];
+  a11y_item = gtk_icon_view_accessible_find_child (atk_obj, index);
+
+  widget = GTK_ACCESSIBLE (atk_obj)->widget;
+  icon_view = GTK_ICON_VIEW (widget);
+  item = a11y_item->item;
+
+  name = gtk_icon_view_item_accessible_get_name (ATK_OBJECT (a11y_item));
+
+  if (!name || strcmp (name, "") == 0)
+    {
+      gtk_icon_view_set_cell_data (icon_view, item);
+      text = get_text (icon_view, item);
+      if (text)
+        {
+          gtk_text_buffer_set_text (a11y_item->text_buffer, text, -1);
+          g_free (text);
+        }
+    }
+
   g_signal_emit_by_name (atk_obj, "visible-data-changed");
 
   return;