libgimp/gimpui.c (gimp_window_set_transient_for) These functions are used

2006-10-16  Tor Lillqvist  <tml@novell.com>

	* libgimp/gimpui.c (gimp_window_set_transient_for)
	* app/widgets/gimpwidgets-utils.c (gimp_window_set_transient_for):
	These functions are used for cross-process transient-for, which
	causes hangs on Win32. Bypass on Win32 for now. ()
This commit is contained in:
Tor Lillqvist 2006-10-16 11:55:50 +00:00 committed by Tor Lillqvist
parent 091a12bcc2
commit eac61e1e12
3 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2006-10-16 Tor Lillqvist <tml@novell.com>
* libgimp/gimpui.c (gimp_window_set_transient_for)
* app/widgets/gimpwidgets-utils.c (gimp_window_set_transient_for):
These functions are used for cross-process transient-for, which
causes hangs on Win32. Bypass on Win32 for now. (#359538)
2006-10-16 Sven Neumann <sven@gimp.org>
* plug-ins/winicon/icodialog.c

View File

@ -829,6 +829,7 @@ gimp_window_get_native (GtkWindow *window)
#ifdef __GNUC__
#warning gimp_window_get_native() unimplementable for the target windowing system
#endif
return (GdkNativeWindow)0;
#endif
#ifdef GDK_WINDOWING_WIN32
@ -857,6 +858,14 @@ void
gimp_window_set_transient_for (GtkWindow *window,
guint32 parent_ID)
{
/* Cross-process transient-for is broken in gdk/win32 <= 2.10.6. It
* causes hangs, at least when used as by the gimp and script-fu
* processes. In some newer GTK+ version it will be fixed to be a
* no-op. If it eventually is fixed to actually work, change this to
* a run-time check of GTK+ version. Remember to change also the
* function with the same name in libgimp/gimpui.c
*/
#ifndef GDK_WINDOWING_WIN32
GdkWindow *parent;
parent = gdk_window_foreign_new_for_display (gdk_display_get_default (),
@ -873,6 +882,7 @@ gimp_window_set_transient_for (GtkWindow *window,
parent, 0);
g_object_unref (parent);
#endif
}
void

View File

@ -278,6 +278,7 @@ gimp_window_set_transient_for (GtkWindow *window,
{
gtk_window_set_transient_for (window, NULL);
#ifndef GDK_WINDOWING_WIN32
g_signal_handlers_disconnect_matched (window, G_SIGNAL_MATCH_FUNC,
0, 0, NULL,
gimp_window_transient_realized,
@ -293,4 +294,5 @@ gimp_window_set_transient_for (GtkWindow *window,
G_CALLBACK (gimp_window_transient_realized),
parent, 0);
g_object_unref (parent);
#endif
}