summaryrefslogtreecommitdiff
path: root/src/core/window-private.h
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2019-05-22 10:56:11 -0400
committerraveit65 <[email protected]>2019-06-16 18:12:44 +0200
commit68438829dc3050fafddcf24a059b93f345c9b5eb (patch)
tree526e67cc31b421f94703b4f7b9bee07bb2594160 /src/core/window-private.h
parent54b4bd0e2ab7014f5c8acc0336aa6a5a420d3c37 (diff)
downloadmarco-68438829dc3050fafddcf24a059b93f345c9b5eb.tar.bz2
marco-68438829dc3050fafddcf24a059b93f345c9b5eb.tar.xz
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
Diffstat (limited to 'src/core/window-private.h')
-rw-r--r--src/core/window-private.h4
1 files changed, 4 insertions, 0 deletions
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 <X11/Xutil.h>
+#include <cairo.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtk.h>
@@ -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;