]> Pileus Git - ~andy/gtk/commitdiff
Merged from stable.
authorKristian Rietveld <kris@gtk.org>
Thu, 29 May 2003 15:09:47 +0000 (15:09 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Thu, 29 May 2003 15:09:47 +0000 (15:09 +0000)
Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>

Merged from stable.

* gtk/gtktreeview.c (check_selection_helper): new function,
(gtk_tree_view_row_deleted): traverse the tree from the
deleted node to see whether the selection changed, instead of
just checking this node. (Fixes #107400, reported by 'Duncan').

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktreeview.c

index 111e0c5bfbf81d1ddb7c891d9fcfabcec84291e6..f67c1dff9dda727e6b5f4829201ea4c24912e448 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>
+
+       Merged from stable.
+
+       * gtk/gtktreeview.c (check_selection_helper): new function,
+       (gtk_tree_view_row_deleted): traverse the tree from the
+       deleted node to see whether the selection changed, instead of
+       just checking this node. (Fixes #107400, reported by 'Duncan').
+
 Thu May 29 16:31:34 2003  Kristian Rietveld  <kris@gtk.org>
 
        Merged from stable.
index 111e0c5bfbf81d1ddb7c891d9fcfabcec84291e6..f67c1dff9dda727e6b5f4829201ea4c24912e448 100644 (file)
@@ -1,3 +1,12 @@
+Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>
+
+       Merged from stable.
+
+       * gtk/gtktreeview.c (check_selection_helper): new function,
+       (gtk_tree_view_row_deleted): traverse the tree from the
+       deleted node to see whether the selection changed, instead of
+       just checking this node. (Fixes #107400, reported by 'Duncan').
+
 Thu May 29 16:31:34 2003  Kristian Rietveld  <kris@gtk.org>
 
        Merged from stable.
index 111e0c5bfbf81d1ddb7c891d9fcfabcec84291e6..f67c1dff9dda727e6b5f4829201ea4c24912e448 100644 (file)
@@ -1,3 +1,12 @@
+Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>
+
+       Merged from stable.
+
+       * gtk/gtktreeview.c (check_selection_helper): new function,
+       (gtk_tree_view_row_deleted): traverse the tree from the
+       deleted node to see whether the selection changed, instead of
+       just checking this node. (Fixes #107400, reported by 'Duncan').
+
 Thu May 29 16:31:34 2003  Kristian Rietveld  <kris@gtk.org>
 
        Merged from stable.
index 111e0c5bfbf81d1ddb7c891d9fcfabcec84291e6..f67c1dff9dda727e6b5f4829201ea4c24912e448 100644 (file)
@@ -1,3 +1,12 @@
+Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>
+
+       Merged from stable.
+
+       * gtk/gtktreeview.c (check_selection_helper): new function,
+       (gtk_tree_view_row_deleted): traverse the tree from the
+       deleted node to see whether the selection changed, instead of
+       just checking this node. (Fixes #107400, reported by 'Duncan').
+
 Thu May 29 16:31:34 2003  Kristian Rietveld  <kris@gtk.org>
 
        Merged from stable.
index 111e0c5bfbf81d1ddb7c891d9fcfabcec84291e6..f67c1dff9dda727e6b5f4829201ea4c24912e448 100644 (file)
@@ -1,3 +1,12 @@
+Thu May 29 17:06:09 2003  Kristian Rietveld  <kris@gtk.org>
+
+       Merged from stable.
+
+       * gtk/gtktreeview.c (check_selection_helper): new function,
+       (gtk_tree_view_row_deleted): traverse the tree from the
+       deleted node to see whether the selection changed, instead of
+       just checking this node. (Fixes #107400, reported by 'Duncan').
+
 Thu May 29 16:31:34 2003  Kristian Rietveld  <kris@gtk.org>
 
        Merged from stable.
index 0c474a3e0c98884abbeb10fe665f6762a5918282..e420fc7b8382393b4b0f7394de27c177476d1520 100644 (file)
@@ -6332,6 +6332,19 @@ count_children_helper (GtkRBTree *tree,
   (*((gint *)data))++;
 }
 
+static void
+check_selection_helper (GtkRBTree *tree,
+                        GtkRBNode *node,
+                        gpointer   data)
+{
+  gint *value = (gint *)data;
+
+  *value = GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED);
+
+  if (node->children && !*value)
+    _gtk_rbtree_traverse (node->children, node->children->root, G_POST_ORDER, check_selection_helper, data);
+}
+
 static void
 gtk_tree_view_row_deleted (GtkTreeModel *model,
                           GtkTreePath  *path,
@@ -6341,7 +6354,7 @@ gtk_tree_view_row_deleted (GtkTreeModel *model,
   GtkRBTree *tree;
   GtkRBNode *node;
   GList *list;
-  gint selection_changed;
+  gint selection_changed = FALSE;
 
   g_return_if_fail (path != NULL);
 
@@ -6353,8 +6366,9 @@ gtk_tree_view_row_deleted (GtkTreeModel *model,
   if (tree == NULL)
     return;
 
-  /* Change the selection */
-  selection_changed = GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED);
+  /* check if the selection has been changed */
+  _gtk_rbtree_traverse (tree, node, G_POST_ORDER,
+                        check_selection_helper, &selection_changed);
 
   for (list = tree_view->priv->columns; list; list = list->next)
     if (((GtkTreeViewColumn *)list->data)->visible &&