diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 307745f2d4..ce478b5421 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -1548,7 +1548,7 @@ gdk_window_ensure_native (GdkWindow *window) GDK_WINDOW_IMPL_GET_IFACE (private->impl)->input_shape_combine_region ((GdkWindow *)private, private->input_shape, 0, 0); if (gdk_window_is_viewable (window)) - GDK_WINDOW_IMPL_GET_IFACE (private->impl)->show (window); + GDK_WINDOW_IMPL_GET_IFACE (private->impl)->show (window, FALSE); return TRUE; } @@ -5684,7 +5684,7 @@ gdk_window_raise_internal (GdkWindow *window) } static void -show_all_visible_impls (GdkWindowObject *private) +show_all_visible_impls (GdkWindowObject *private, gboolean already_mapped) { GdkWindowObject *child; GList *l; @@ -5693,11 +5693,11 @@ show_all_visible_impls (GdkWindowObject *private) { child = l->data; if (GDK_WINDOW_IS_MAPPED (child)) - show_all_visible_impls (child); + show_all_visible_impls (child, FALSE); } if (gdk_window_has_impl (private)) - GDK_WINDOW_IMPL_GET_IFACE (private->impl)->show ((GdkWindow *)private); + GDK_WINDOW_IMPL_GET_IFACE (private->impl)->show ((GdkWindow *)private, already_mapped); } static void @@ -5731,7 +5731,7 @@ gdk_window_show_internal (GdkWindow *window, gboolean raise) } if (gdk_window_is_viewable (window)) - show_all_visible_impls (private); + show_all_visible_impls (private, was_mapped); if (!was_mapped) { diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h index db1c2ac96f..5905de80f3 100644 --- a/gdk/gdkwindowimpl.h +++ b/gdk/gdkwindowimpl.h @@ -43,7 +43,8 @@ struct _GdkWindowImplIface { GTypeInterface g_iface; - void (* show) (GdkWindow *window); + void (* show) (GdkWindow *window, + gboolean already_mapped); void (* hide) (GdkWindow *window); void (* withdraw) (GdkWindow *window); void (* raise) (GdkWindow *window); diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 291d25d46b..0f3ef1cf51 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -1298,7 +1298,7 @@ set_initial_hints (GdkWindow *window) } static void -gdk_window_x11_show (GdkWindow *window) +gdk_window_x11_show (GdkWindow *window, gboolean already_mapped) { GdkWindowObject *private = (GdkWindowObject*) window; GdkDisplay *display; @@ -1308,8 +1308,9 @@ gdk_window_x11_show (GdkWindow *window) Display *xdisplay = GDK_WINDOW_XDISPLAY (window); Window xwindow = GDK_WINDOW_XID (window); gboolean unset_bg; - - set_initial_hints (window); + + if (!already_mapped) + set_initial_hints (window); if (WINDOW_IS_TOPLEVEL (window)) {