diff --git a/gdk/x11/gdkgeometry-x11.c b/gdk/x11/gdkgeometry-x11.c index 891fd94721..6bd71c3b44 100644 --- a/gdk/x11/gdkgeometry-x11.c +++ b/gdk/x11/gdkgeometry-x11.c @@ -201,13 +201,16 @@ _gdk_window_move_resize_child (GdkWindow *window, the window won't be visible anyway and thus it will be shaped to nothing */ - _gdk_x11_window_tmp_unset_parent_bg (window, TRUE); + + _gdk_x11_window_tmp_unset_parent_bg (window); + _gdk_x11_window_tmp_unset_bg (window, TRUE); XMoveResizeWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), obj->x + obj->parent->abs_x, obj->y + obj->parent->abs_y, width, height); - _gdk_x11_window_tmp_reset_parent_bg (window, TRUE); + _gdk_x11_window_tmp_reset_parent_bg (window); + _gdk_x11_window_tmp_reset_bg (window, TRUE); } static Bool diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 204e6bfcfd..0089d1e0e7 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -299,16 +299,16 @@ _gdk_x11_window_tmp_unset_bg (GdkWindow *window, } void -_gdk_x11_window_tmp_unset_parent_bg (GdkWindow *window, - gboolean recurse) +_gdk_x11_window_tmp_unset_parent_bg (GdkWindow *window) { GdkWindowObject *private; private = (GdkWindowObject*) window; + + if (GDK_WINDOW_TYPE (private->parent) == GDK_WINDOW_ROOT) + return; - if (GDK_WINDOW_TYPE (private->parent) != GDK_WINDOW_ROOT) - window = _gdk_window_get_impl_window ((GdkWindow *)private->parent); - - _gdk_x11_window_tmp_unset_bg (window, recurse); + window = _gdk_window_get_impl_window ((GdkWindow *)private->parent); + _gdk_x11_window_tmp_unset_bg (window, FALSE); } void @@ -343,16 +343,17 @@ _gdk_x11_window_tmp_reset_bg (GdkWindow *window, } void -_gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window, - gboolean recurse) +_gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window) { GdkWindowObject *private; private = (GdkWindowObject*) window; - if (GDK_WINDOW_TYPE (private->parent) != GDK_WINDOW_ROOT) - window = _gdk_window_get_impl_window ((GdkWindow *)private->parent); + if (GDK_WINDOW_TYPE (private->parent) == GDK_WINDOW_ROOT) + return; + + window = _gdk_window_get_impl_window ((GdkWindow *)private->parent); - _gdk_x11_window_tmp_reset_bg (window, recurse); + _gdk_x11_window_tmp_reset_bg (window, FALSE); } static GdkColormap* @@ -1598,12 +1599,12 @@ gdk_window_x11_reparent (GdkWindow *window, impl = GDK_WINDOW_IMPL_X11 (window_private->impl); _gdk_x11_window_tmp_unset_bg (window, TRUE); - _gdk_x11_window_tmp_unset_parent_bg (window, FALSE); + _gdk_x11_window_tmp_unset_parent_bg (window); XReparentWindow (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), GDK_WINDOW_XID (new_parent), parent_private->abs_x + x, parent_private->abs_y + y); - _gdk_x11_window_tmp_reset_parent_bg (window, FALSE); + _gdk_x11_window_tmp_reset_parent_bg (window); _gdk_x11_window_tmp_reset_bg (window, TRUE); if (GDK_WINDOW_TYPE (new_parent) == GDK_WINDOW_FOREIGN) @@ -3401,15 +3402,21 @@ do_shape_combine_region (GdkWindow *window, private->shaped = FALSE; if (shape == ShapeBounding) - _gdk_x11_window_tmp_unset_parent_bg (window, TRUE); + { + _gdk_x11_window_tmp_unset_parent_bg (window); + _gdk_x11_window_tmp_unset_bg (window, TRUE); + } XShapeCombineMask (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), shape, 0, 0, None, ShapeSet); - if (shape == ShapeBounding) - _gdk_x11_window_tmp_reset_parent_bg (window, TRUE); + if (shape == ShapeBounding) + { + _gdk_x11_window_tmp_reset_parent_bg (window); + _gdk_x11_window_tmp_reset_bg (window, TRUE); + } } return; } @@ -3429,7 +3436,10 @@ do_shape_combine_region (GdkWindow *window, &xrects, &n_rects); if (shape == ShapeBounding) - _gdk_x11_window_tmp_unset_parent_bg (window, TRUE); + { + _gdk_x11_window_tmp_unset_parent_bg (window); + _gdk_x11_window_tmp_unset_bg (window, TRUE); + } XShapeCombineRectangles (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), shape, @@ -3439,7 +3449,10 @@ do_shape_combine_region (GdkWindow *window, YXBanded); if (shape == ShapeBounding) - _gdk_x11_window_tmp_reset_parent_bg (window, TRUE); + { + _gdk_x11_window_tmp_reset_parent_bg (window); + _gdk_x11_window_tmp_reset_bg (window, TRUE); + } g_free (xrects); } diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h index 744ff2ce06..0ff1b437b5 100644 --- a/gdk/x11/gdkwindow-x11.h +++ b/gdk/x11/gdkwindow-x11.h @@ -148,10 +148,8 @@ void _gdk_x11_window_tmp_unset_bg (GdkWindow *window, gboolean recurse); void _gdk_x11_window_tmp_reset_bg (GdkWindow *window, gboolean recurse); -void _gdk_x11_window_tmp_unset_parent_bg (GdkWindow *window, - gboolean recurse); -void _gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window, - gboolean recurse); +void _gdk_x11_window_tmp_unset_parent_bg (GdkWindow *window); +void _gdk_x11_window_tmp_reset_parent_bg (GdkWindow *window); GdkCursor *_gdk_x11_window_get_cursor (GdkWindow *window); void _gdk_x11_window_get_offsets (GdkWindow *window,