diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-02-16 16:37:24 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-02-16 16:37:24 +0000 |
commit | a0c5253c266350e3624e5569f3e0fe67c57a0e4d (patch) | |
tree | 655169b01382dea3eb105f18882113c9688b2df6 /gtk/gtktreeview.c | |
parent | 71f5aa3f2a78d1bed731fedeb68d41b40e46be82 (diff) | |
download | gdk-pixbuf-a0c5253c266350e3624e5569f3e0fe67c57a0e4d.tar.gz |
Fixes for #143829, Tommi Komulainen, Christian Persch:
2005-02-16 Matthias Clasen <mclasen@redhat.com>
Fixes for #143829, Tommi Komulainen, Christian Persch:
* gtk/gtktreeview.c (gtk_tree_view_destroy): Remove the
typeselect_flush_timeout when destroying the widgets
it is operating on.
(gtk_tree_view_ensure_interactive_directory): Add the
popup to the window group of the toplevel it belongs to.
* gtk/gtkcombobox.c (gtk_combo_box_set_popup_widget)
(gtk_combo_box_popup): Do the same here.
Diffstat (limited to 'gtk/gtktreeview.c')
-rw-r--r-- | gtk/gtktreeview.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 3eb8b8139..e4db02d40 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -1388,6 +1388,11 @@ gtk_tree_view_destroy (GtkObject *object) gtk_widget_destroy (tree_view->priv->search_window); tree_view->priv->search_window = NULL; tree_view->priv->search_entry = NULL; + if (tree_view->priv->typeselect_flush_timeout) + { + g_source_remove (tree_view->priv->typeselect_flush_timeout); + tree_view->priv->typeselect_flush_timeout = 0; + } } if (tree_view->priv->search_destroy) @@ -8893,13 +8898,27 @@ send_focus_change (GtkWidget *widget, static void gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view) { - GtkWidget *frame, *vbox; + GtkWidget *frame, *vbox, *toplevel; - if (tree_view->priv->search_window != NULL) - return; + toplevel = gtk_widget_get_toplevel (GTK_WIDGET (tree_view)); + if (tree_view->priv->search_window != NULL) + { + if (GTK_WINDOW (toplevel)->group) + gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, + GTK_WINDOW (tree_view->priv->search_window)); + else if (GTK_WINDOW (tree_view->priv->search_window)->group) + gtk_window_group_remove_window (GTK_WINDOW (tree_view->priv->search_window)->group, + GTK_WINDOW (tree_view->priv->search_window)); + return; + } + tree_view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP); + if (GTK_WINDOW (toplevel)->group) + gtk_window_group_add_window (GTK_WINDOW (toplevel)->group, + GTK_WINDOW (tree_view->priv->search_window)); + gtk_window_set_modal (GTK_WINDOW (tree_view->priv->search_window), TRUE); g_signal_connect (tree_view->priv->search_window, "delete_event", G_CALLBACK (gtk_tree_view_search_delete_event), |