From 1a866a56a4abe3f12cfd91ac3f293df440175aa0 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Thu, 29 May 2003 14:05:03 +0000 Subject: [PATCH] check if tree/node are still the same after _internal_select_node. (Fixes Thu May 29 16:01:38 2003 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check if tree/node are still the same after _internal_select_node. (Fixes #92256, reported by edscott). --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gtk/gtktreeview.c | 12 ++++++++++++ 6 files changed, 42 insertions(+) diff --git a/ChangeLog b/ChangeLog index 39832673dc..d3e5ae4130 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu May 29 16:01:38 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check + if tree/node are still the same after _internal_select_node. + (Fixes #92256, reported by edscott). + Thu May 29 15:38:30 2003 Kristian Rietveld Fixes #75745, reported by Richard Hult. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 39832673dc..d3e5ae4130 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Thu May 29 16:01:38 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check + if tree/node are still the same after _internal_select_node. + (Fixes #92256, reported by edscott). + Thu May 29 15:38:30 2003 Kristian Rietveld Fixes #75745, reported by Richard Hult. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 39832673dc..d3e5ae4130 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Thu May 29 16:01:38 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check + if tree/node are still the same after _internal_select_node. + (Fixes #92256, reported by edscott). + Thu May 29 15:38:30 2003 Kristian Rietveld Fixes #75745, reported by Richard Hult. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 39832673dc..d3e5ae4130 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Thu May 29 16:01:38 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check + if tree/node are still the same after _internal_select_node. + (Fixes #92256, reported by edscott). + Thu May 29 15:38:30 2003 Kristian Rietveld Fixes #75745, reported by Richard Hult. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 39832673dc..d3e5ae4130 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Thu May 29 16:01:38 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_real_set_cursor): check + if tree/node are still the same after _internal_select_node. + (Fixes #92256, reported by edscott). + Thu May 29 15:38:30 2003 Kristian Rietveld Fixes #75745, reported by Richard Hult. diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 65d711fdeb..26f0832ed8 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -9621,11 +9621,23 @@ gtk_tree_view_real_set_cursor (GtkTreeView *tree_view, _gtk_tree_view_find_node (tree_view, path, &tree, &node); if (tree != NULL) { + GtkRBTree *new_tree = NULL; + GtkRBNode *new_node = NULL; + if (clear_and_select && !((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)) _gtk_tree_selection_internal_select_node (tree_view->priv->selection, node, tree, path, state, FALSE); + /* We have to re-find tree and node here again, somebody might have + * cleared the node or the whole tree in the GtkTreeSelection::changed + * callback. If the nodes differ we bail out here. + */ + _gtk_tree_view_find_node (tree_view, path, &new_tree, &new_node); + + if (tree != new_tree || node != new_node) + return; + if (clamp_node) { gtk_tree_view_clamp_node_visible (tree_view, tree, node);