diff --git a/moo/mooedit/mootextfind.c b/moo/mooedit/mootextfind.c index e84a4b2f..64021ffa 100644 --- a/moo/mooedit/mootextfind.c +++ b/moo/mooedit/mootextfind.c @@ -539,6 +539,7 @@ moo_text_view_run_find (GtkTextView *view) regex = moo_find_get_regex (MOO_FIND (find)); gtk_widget_destroy (find); + buffer = gtk_text_view_get_buffer (view); get_search_bounds (buffer, flags, &start, &end); diff --git a/moo/mooutils/moodialogs.c b/moo/mooutils/moodialogs.c index cfa5bac9..249981cc 100644 --- a/moo/mooutils/moodialogs.c +++ b/moo/mooutils/moodialogs.c @@ -126,6 +126,18 @@ position_window (GtkWindow *dialog) } +#ifdef __WIN32__ +static void +on_hide (GtkWindow *window) +{ + GtkWindow *parent = gtk_window_get_transient_for (window); + + if (parent && GTK_WIDGET_DRAWABLE (parent)) + gtk_window_present (parent); +} +#endif + + void moo_position_window (GtkWidget *window, GtkWidget *parent, @@ -145,7 +157,13 @@ moo_position_window (GtkWidget *window, toplevel = NULL; if (toplevel) + { gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (toplevel)); +#ifdef __WIN32__ + g_signal_connect (window, "unmap", on_hide, NULL); +#endif + } + if (toplevel && GTK_WINDOW(toplevel)->group) gtk_window_group_add_window (GTK_WINDOW(toplevel)->group, GTK_WINDOW (window)); diff --git a/moo/mooutils/mooprefsdialog.c b/moo/mooutils/mooprefsdialog.c index 9c6a46c4..417fe48b 100644 --- a/moo/mooutils/mooprefsdialog.c +++ b/moo/mooutils/mooprefsdialog.c @@ -355,15 +355,6 @@ moo_prefs_dialog_response (GtkDialog *dialog, gtk_widget_hide (GTK_WIDGET (dialog)); else gtk_widget_destroy (GTK_WIDGET (dialog)); - -#ifdef __WIN32__ - { - GtkWindow *parent = gtk_window_get_transient_for (GTK_WINDOW (dialog)); - - if (parent) - gtk_window_present (parent); - } -#endif } }