[gtk+] treeview: Set EXPANDED state directly on a11y elements



commit adf183b71ff5b1cbef8c73fd61c5ebf4fa16faf3
Author: Benjamin Otte <otte redhat com>
Date:   Mon Dec 12 12:16:31 2011 +0100

    treeview: Set EXPANDED state directly on a11y elements

 gtk/a11y/gtktreeviewaccessible.c |   39 ++-----------------------------------
 gtk/gtktreeview.c                |    6 +++++
 2 files changed, 9 insertions(+), 36 deletions(-)
---
diff --git a/gtk/a11y/gtktreeviewaccessible.c b/gtk/a11y/gtktreeviewaccessible.c
index e14fd34..8eeaa3f 100644
--- a/gtk/a11y/gtktreeviewaccessible.c
+++ b/gtk/a11y/gtktreeviewaccessible.c
@@ -47,9 +47,6 @@ struct _GtkTreeViewAccessibleCellInfo
 
 /* signal handling */
 
-static gboolean row_collapsed_cb     (GtkTreeView      *tree_view,
-                                      GtkTreeIter      *iter,
-                                      GtkTreePath      *path);
 static void     selection_changed_cb (GtkTreeSelection *selection,
                                       gpointer          data);
 
@@ -213,8 +210,6 @@ gtk_tree_view_accessible_initialize (AtkObject *obj,
   tree_model = gtk_tree_view_get_model (tree_view);
   selection = gtk_tree_view_get_selection (tree_view);
 
-  g_signal_connect_after (widget, "row-collapsed",
-                          G_CALLBACK (row_collapsed_cb), NULL);
   g_signal_connect (selection, "changed",
                     G_CALLBACK (selection_changed_cb), obj);
 
@@ -546,8 +541,6 @@ gtk_tree_view_accessible_ref_child (AtkObject *obj,
       if (is_expander)
         {
           set_cell_expandable (cell);
-          if (is_expanded)
-            _gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDED, FALSE);
         }
 
       /* If the row is selected, all cells on the row are selected */
@@ -1510,24 +1503,6 @@ gtk_cell_accessible_parent_interface_init (GtkCellAccessibleParentIface *iface)
 
 /* signal handling */
 
-static gboolean
-row_collapsed_cb (GtkTreeView *tree_view,
-                  GtkTreeIter *iter,
-                  GtkTreePath *path)
-{
-  GtkTreeModel *tree_model;
-  AtkObject *atk_obj;
-  GtkTreeViewAccessible *accessible;
-
-  atk_obj = gtk_widget_get_accessible (GTK_WIDGET (tree_view));
-  accessible = GTK_TREE_VIEW_ACCESSIBLE (atk_obj);
-  tree_model = gtk_tree_view_get_model (tree_view);
-
-  /* Set collapse state */
-  set_expand_state (tree_view, tree_model, accessible, path, FALSE);
-  return FALSE;
-}
-
 static void
 selection_changed_cb (GtkTreeSelection *selection,
                       gpointer          data)
@@ -2145,12 +2120,10 @@ iterate_thru_children (GtkTreeView  *tree_view,
 }
 
 /* If the tree_path passed in has children, then
- * ATK_STATE_EXPANDABLE is set.  If the row is expanded
- * ATK_STATE_EXPANDED is turned on.  If the row is
- * collapsed, then ATK_STATE_EXPANDED is removed.
+ * ATK_STATE_EXPANDABLE is set.
  *
  * If the tree_path passed in has no children, then
- * ATK_STATE_EXPANDABLE and ATK_STATE_EXPANDED are removed.
+ * ATK_STATE_EXPANDABLE is removed.
  *
  * If set_on_ancestor is TRUE, then this function will also
  * update all cells that are ancestors of the tree_path.
@@ -2196,7 +2169,7 @@ set_expand_state (GtkTreeView           *tree_view,
                 found = TRUE;
             }
 
-          /* Set ATK_STATE_EXPANDABLE and ATK_STATE_EXPANDED
+          /* Set ATK_STATE_EXPANDABLE
            * for ancestors and found cells.
            */
           if (found)
@@ -2210,15 +2183,9 @@ set_expand_state (GtkTreeView           *tree_view,
               if (gtk_tree_model_iter_has_child (tree_model, &iter))
                 {
                   set_cell_expandable (cell);
-
-                  if (gtk_tree_view_row_expanded (tree_view, cell_path))
-                    _gtk_cell_accessible_add_state (cell, ATK_STATE_EXPANDED, TRUE);
-                  else
-                    _gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
                 }
               else
                 {
-                  _gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDED, TRUE);
                   if (_gtk_cell_accessible_remove_state (cell, ATK_STATE_EXPANDABLE, TRUE))
                   /* The state may have been propagated to the container cell */
                   if (!GTK_IS_CONTAINER_CELL_ACCESSIBLE (cell))
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 73ba8c6..2b2087d 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -9081,6 +9081,9 @@ gtk_tree_view_row_deleted (GtkTreeModel *model,
       if (tree_view->priv->tree == tree)
 	tree_view->priv->tree = NULL;
 
+      _gtk_tree_view_accessible_remove_state (tree_view,
+                                              tree->parent_tree, tree->parent_node,
+                                              GTK_CELL_RENDERER_EXPANDED);
       _gtk_tree_view_accessible_remove (tree_view, tree, NULL);
       _gtk_rbtree_remove (tree);
     }
@@ -12917,6 +12920,9 @@ gtk_tree_view_real_collapse_row (GtkTreeView *tree_view,
   tree_view->priv->last_button_y = -1;
 
   _gtk_tree_view_accessible_remove (tree_view, node->children, NULL);
+  _gtk_tree_view_accessible_remove_state (tree_view,
+                                          tree, node,
+                                          GTK_CELL_RENDERER_EXPANDED);
 
   _gtk_rbtree_remove (node->children);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]