From 6f33395c69550e1fad6aa49d52e1284ca89f88c1 Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Wed, 22 May 2019 10:56:11 -0400 Subject: Only shadow ARGB windows with a frame outside the frame An ARGB window with a frame is likely something like a transparent terminal. It looks awful (and breaks transparency) to draw a big opaque black shadow under the window, so clip out the region under the terminal from the shadow we draw. Add meta_window_get_frame_bounds() to get a cairo region for the outer bounds of the frame of a window, and modify the frame handling code to notice changes to the frame shape and discard a cached region. meta_frames_apply_shapes() is refactored so we can extract meta_frames_get_frame_bounds() from it. https://bugzilla.gnome.org/show_bug.cgi?id=635268 NOTE: Applied only partially, compositor part is still missing... upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/0f2e32d1 --- src/core/window-private.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/core/window-private.h') diff --git a/src/core/window-private.h b/src/core/window-private.h index 38184231..50bc57be 100644 --- a/src/core/window-private.h +++ b/src/core/window-private.h @@ -41,6 +41,7 @@ #include "stack.h" #include "iconcache.h" #include +#include #include #include @@ -324,6 +325,9 @@ struct _MetaWindow /* if TRUE, application is buggy and SYNC resizing is turned off */ guint disable_sync : 1; + /* if non-NULL, the bounds of the window frame */ + cairo_region_t *frame_bounds; + /* Note: can be NULL */ GSList *struts; -- cgit v1.2.1