summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>2013-05-15 19:56:12 +0200
committerTomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>2013-05-15 19:56:12 +0200
commitf229e3a88f31e75b32422e6553552a1fd76c8af6 (patch)
treec567e0083f8ad469b08138cdfe81faf6916351fd
parent1fedb9b384af093bbc8eff7d341e48ea6de17868 (diff)
parent9cbcb2866b771ab0a2d2652e1f3fd4a0f3ab3f18 (diff)
downloadpidgin-f229e3a88f31e75b32422e6553552a1fd76c8af6.tar.gz
Merge with main
-rw-r--r--pidgin/gtkrequest.c25
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)