summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorVictor Kareh <[email protected]>2019-05-22 10:56:11 -0400
committerVictor Kareh <[email protected]>2019-06-05 10:49:37 -0400
commit6f33395c69550e1fad6aa49d52e1284ca89f88c1 (patch)
tree09cb0f940a05451daff3e5814fc486bf1d59baea /src/include
parent478b2c78379c56dade8e59b342c5fa6344f33314 (diff)
downloadmarco-6f33395c69550e1fad6aa49d52e1284ca89f88c1.tar.bz2
marco-6f33395c69550e1fad6aa49d52e1284ca89f88c1.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/include')
-rw-r--r--src/include/ui.h5
-rw-r--r--src/include/window.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/include/ui.h b/src/include/ui.h
index 652e8cfc..40ae03cf 100644
--- a/src/include/ui.h
+++ b/src/include/ui.h
@@ -97,6 +97,11 @@ void meta_ui_apply_frame_shape (MetaUI *ui,
int new_window_height,
gboolean window_has_shape);
+cairo_region_t *meta_ui_get_frame_bounds (MetaUI *ui,
+ Window xwindow,
+ int window_width,
+ int window_height);
+
void meta_ui_queue_frame_draw (MetaUI *ui,
Window xwindow);
diff --git a/src/include/window.h b/src/include/window.h
index 3fd0ee53..0aa208e4 100644
--- a/src/include/window.h
+++ b/src/include/window.h
@@ -23,6 +23,7 @@
#define META_WINDOW_H
#include <glib.h>
+#include <cairo.h>
#include <X11/Xlib.h>
#include "boxes.h"
@@ -37,5 +38,6 @@ MetaDisplay *meta_window_get_display (MetaWindow *window);
Window meta_window_get_xwindow (MetaWindow *window);
MetaWindow *meta_window_get_transient_for (MetaWindow *window);
gboolean meta_window_is_maximized (MetaWindow *window);
+cairo_region_t *meta_window_get_frame_bounds (MetaWindow *window);
#endif