forked from AuroraMiddleware/gtk
gdk: Fix alpha window background paintings on non-implicit paints
This commit is contained in:
parent
68843a3e93
commit
76ea768316
@ -2907,6 +2907,20 @@ gdk_window_begin_paint_region (GdkWindow *window,
|
||||
gdk_window_get_content (window),
|
||||
MAX (clip_box.width, 1),
|
||||
MAX (clip_box.height, 1));
|
||||
|
||||
/* Normally alpha backgrounded client side windows are composited on the implicit paint
|
||||
by being drawn in back to front order. However, if implicit paints are not used, for
|
||||
instance if it was flushed due to a non-double-buffered paint in the middle of the
|
||||
expose we need to copy in the existing data here. */
|
||||
if (!gdk_window_has_impl (window) && window->has_alpha_background)
|
||||
{
|
||||
cairo_t *cr = cairo_create (paint->surface);
|
||||
gdk_cairo_set_source_window (cr, impl_window,
|
||||
- (window->abs_x + clip_box.x),
|
||||
- (window->abs_y + clip_box.y));
|
||||
cairo_paint (cr);
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
}
|
||||
cairo_surface_set_device_offset (paint->surface, -clip_box.x, -clip_box.y);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user