diff options
author | Kristian Rietveld <kris@gtk.org> | 2003-06-06 21:42:52 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2003-06-06 21:42:52 +0000 |
commit | e0e04dd8474fe8d49f7bddcf4a5e8437a804149e (patch) | |
tree | 4b2816ab71139850346a09c0cc77308e969b656e /gtk | |
parent | 16191e527407f6d24b8cd376de8b106233ee5906 (diff) | |
download | gtk+-e0e04dd8474fe8d49f7bddcf4a5e8437a804149e.tar.gz |
Merged from stable.
Fri Jun 6 23:38:23 2003 Kristian Rietveld <kris@gtk.org>
Merged from stable.
* gtk/gtktreeview.c (do_expand_collapse),
(expand_collapse_timeout), (cancel_arrow_animation): made
expand_collapse_timeout a wrapper with locks around
do_expand_collapse, made cancel_arrow_animation use
do_expand_collapse. Fixes threadlock. (Fixes #111286, patch from
Peter Bloomfield).
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktreeview.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index f0fa79588c..42cb617c77 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -349,6 +349,7 @@ static void gtk_tree_view_real_set_cursor (GtkTreeView static gboolean gtk_tree_view_has_special_cell (GtkTreeView *tree_view); static gboolean expand_collapse_timeout (gpointer data); +static gboolean do_expand_collapse (GtkTreeView *tree_view); /* interactive search */ static void gtk_tree_view_search_dialog_destroy (GtkWidget *search_dialog, @@ -6441,7 +6442,7 @@ static void cancel_arrow_animation (GtkTreeView *tree_view) { if (tree_view->priv->expand_collapse_timeout) - while (expand_collapse_timeout (tree_view)); + while (do_expand_collapse (tree_view)); tree_view->priv->expand_collapse_timeout = 0; } @@ -9175,14 +9176,25 @@ gtk_tree_view_expand_all (GtkTreeView *tree_view) static gboolean expand_collapse_timeout (gpointer data) { - GtkTreeView *tree_view = data; + gboolean retval; + + GDK_THREADS_ENTER (); + + retval = do_expand_collapse (data); + + GDK_THREADS_LEAVE (); + + return retval; +} + +static gboolean +do_expand_collapse (GtkTreeView *tree_view) +{ GtkRBNode *node; GtkRBTree *tree; gboolean expanding; gboolean redraw; - GDK_THREADS_ENTER (); - redraw = FALSE; expanding = TRUE; @@ -9231,13 +9243,9 @@ expand_collapse_timeout (gpointer data) { gtk_tree_view_queue_draw_arrow (tree_view, tree, node, NULL); - GDK_THREADS_LEAVE (); - return TRUE; } - GDK_THREADS_LEAVE (); - return FALSE; } |