summaryrefslogtreecommitdiff
path: root/gtk/gtktreeview.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-02-16 16:37:24 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-02-16 16:37:24 +0000
commita0c5253c266350e3624e5569f3e0fe67c57a0e4d (patch)
tree655169b01382dea3eb105f18882113c9688b2df6 /gtk/gtktreeview.c
parent71f5aa3f2a78d1bed731fedeb68d41b40e46be82 (diff)
downloadgdk-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.c25
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),