diff options
author | Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im> | 2013-05-15 19:56:12 +0200 |
---|---|---|
committer | Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im> | 2013-05-15 19:56:12 +0200 |
commit | f229e3a88f31e75b32422e6553552a1fd76c8af6 (patch) | |
tree | c567e0083f8ad469b08138cdfe81faf6916351fd | |
parent | 1fedb9b384af093bbc8eff7d341e48ea6de17868 (diff) | |
parent | 9cbcb2866b771ab0a2d2652e1f3fd4a0f3ab3f18 (diff) | |
download | pidgin-f229e3a88f31e75b32422e6553552a1fd76c8af6.tar.gz |
Merge with main
-rw-r--r-- | pidgin/gtkrequest.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/pidgin/gtkrequest.c b/pidgin/gtkrequest.c index 1557fc692d..adb528a0a5 100644 --- a/pidgin/gtkrequest.c +++ b/pidgin/gtkrequest.c @@ -1747,6 +1747,26 @@ pidgin_request_folder(const char *title, const char *dirname, return (void *)data; } +#ifdef _WIN32 + +/* Not needed (yet) for non-win32, but should work everywhere. */ +static void +pidgin_window_detach_children(GtkWindow* parent) +{ + GList *it; + + g_return_if_fail(parent != NULL); + + it = gtk_window_list_toplevels(); + for (it = g_list_first(it); it != NULL; it = g_list_next(it)) { + GtkWindow *win = GTK_WINDOW(it->data); + if (gtk_window_get_transient_for(win) == parent) + gtk_window_set_transient_for(win, NULL); + } +} + +#endif + static void pidgin_close_request(PurpleRequestType type, void *ui_handle) { @@ -1754,6 +1774,11 @@ pidgin_close_request(PurpleRequestType type, void *ui_handle) g_free(data->cbs); +#ifdef _WIN32 + /* Win32 gtk ignores gtk_window_set_destroy_with_parent(..., FALSE). */ + pidgin_window_detach_children(GTK_WINDOW(data->dialog)); +#endif + gtk_widget_destroy(data->dialog); if (type == PURPLE_REQUEST_FIELDS) |