From 4f567598327e9fdc50eec37ef286c62415a6677f Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sat, 30 Jan 2021 11:21:39 +0000 Subject: window: Do not render shadows on left/right tiled windows This pull request prevents shadows being rendered for left and right side titled windows. This behaviour is consistent with maximised windows, which also do not render shadows. The rationale for this change is so that when two windows are titled along side each other, it prevents central shadows bleeding into the touching points of the windows. metacity-theme-x.xml has provision to style left/right titled windows. This patch makes it possible to to create window themes that present clean side-by-side tiled windows. --- src/compositor/compositor-xrender.c | 13 +++++++++++++ src/core/window.c | 12 ++++++++++++ src/include/window.h | 2 ++ 3 files changed, 27 insertions(+) diff --git a/src/compositor/compositor-xrender.c b/src/compositor/compositor-xrender.c index 13e8e620..f70432a7 100644 --- a/src/compositor/compositor-xrender.c +++ b/src/compositor/compositor-xrender.c @@ -1025,6 +1025,19 @@ window_has_shadow (MetaCompWindow *cw) return FALSE; } + /* Do not add shadows for left/right tiled windows */ + if (meta_window_is_tiled_left (cw->window)) + { + meta_verbose ("Window has no shadow because it is tiled left\n"); + return FALSE; + } + + if (meta_window_is_tiled_right (cw->window)) + { + meta_verbose ("Window has no shadow because it is tiled right\n"); + return FALSE; + } + if (meta_window_get_frame (cw->window)) { meta_verbose ("Window has shadow because it has a frame\n"); return TRUE; diff --git a/src/core/window.c b/src/core/window.c index b301dbd9..add00789 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -8855,6 +8855,18 @@ meta_window_is_maximized (MetaWindow *window) return META_WINDOW_MAXIMIZED (window); } +gboolean +meta_window_is_tiled_left (MetaWindow *window) +{ + return META_WINDOW_TILED_LEFT (window); +} + +gboolean +meta_window_is_tiled_right (MetaWindow *window) +{ + return META_WINDOW_TILED_RIGHT (window); +} + /** * meta_window_is_client_decorated: * diff --git a/src/include/window.h b/src/include/window.h index 6dece7d3..7d749c00 100644 --- a/src/include/window.h +++ b/src/include/window.h @@ -45,6 +45,8 @@ 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); +gboolean meta_window_is_tiled_left (MetaWindow *window); +gboolean meta_window_is_tiled_right (MetaWindow *window); G_END_DECLS -- cgit v1.2.1