From bb3c8630f4efe78f28f6ad0d7a185b1cf88395b4 Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Thu, 23 May 2019 11:43:04 -0400 Subject: compositor: fix shadow size and placement upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/9fd053da --- src/compositor/compositor-xrender.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index 0d8b3b6c..0748e13e 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -648,8 +648,8 @@ shadow_picture_clip (Display *xdisplay, if (!visible_region) return; - shadow_dx = -1 * shadow_offsets_x [cw->shadow_type]; - shadow_dy = -1 * shadow_offsets_y [cw->shadow_type]; + shadow_dx = -1 * (int) shadow_offsets_x [cw->shadow_type] - borders.invisible.left; + shadow_dy = -1 * (int) shadow_offsets_y [cw->shadow_type] - borders.invisible.top; rect.x = 0; rect.y = 0; @@ -1094,18 +1094,21 @@ win_extents (MetaCompWindow *cw) meta_frame_calc_borders (frame, &borders); } - cw->shadow_dx = shadow_offsets_x [cw->shadow_type]; - cw->shadow_dy = shadow_offsets_y [cw->shadow_type]; + cw->shadow_dx = (int) shadow_offsets_x [cw->shadow_type] + borders.invisible.left; + cw->shadow_dy = (int) shadow_offsets_y [cw->shadow_type] + borders.invisible.top; if (!cw->shadow) { double opacity = SHADOW_OPACITY; + int invisible_width = borders.invisible.left + borders.invisible.right; + int invisible_height = borders.invisible.top + borders.invisible.bottom; + if (cw->opacity != (guint) OPAQUE) opacity = opacity * ((double) cw->opacity) / ((double) OPAQUE); cw->shadow = shadow_picture (display, screen, cw, opacity, borders, - cw->attrs.width + cw->attrs.border_width * 2, - cw->attrs.height + cw->attrs.border_width * 2, + cw->attrs.width - invisible_width + cw->attrs.border_width * 2, + cw->attrs.height - invisible_height + cw->attrs.border_width * 2, &cw->shadow_width, &cw->shadow_height); } -- cgit v1.2.1