From e08f8af667e5a7f3b728dc660edaf0192b10963d Mon Sep 17 00:00:00 2001 From: diredocks <26994007+diredocks@users.noreply.github.com> Date: Fri, 6 Jun 2025 03:50:01 +0800 Subject: [PATCH] ssd: ignore shadows_on_tiled if gap < shadow_size --- docs/labwc-config.5.scd | 5 ++++- src/ssd/ssd-shadow.c | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index 71b6867b..0307b0e1 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -525,7 +525,10 @@ extending outward from the snapped edge. Should drop-shadows be rendered behind windows. Default is no. ** [yes|no] - Should drop-shadows be rendered behind tiled windows. Default is no. + Should drop-shadows be rendered behind tiled windows. This won't take + effect if is smaller than window.active.shadow.size in theme. + + Default is no. ** The font to use for a specific element of a window, menu or OSD. diff --git a/src/ssd/ssd-shadow.c b/src/ssd/ssd-shadow.c index 09b8acb9..b77169b7 100644 --- a/src/ssd/ssd-shadow.c +++ b/src/ssd/ssd-shadow.c @@ -289,10 +289,19 @@ ssd_shadow_update(struct ssd *ssd) assert(ssd->shadow.tree); struct view *view = ssd->view; + struct theme *theme = ssd->view->server->theme; bool maximized = view->maximized == VIEW_AXIS_BOTH; - bool show_shadows = - rc.shadows_enabled && !maximized && - (!view_is_tiled(ssd->view) || rc.shadows_on_tiled); + bool tiled_shadows = false; + if (rc.shadows_on_tiled) { + if (rc.gap >= theme->window[THEME_ACTIVE].shadow_size && + rc.gap >= theme->window[THEME_INACTIVE].shadow_size) { + tiled_shadows = true; + } else { + wlr_log(WLR_INFO, "gap size < shadow_size, ignore rc.shadows_ontiled"); + } + }; + bool show_shadows = rc.shadows_enabled && !maximized && + (!view_is_tiled(ssd->view) || tiled_shadows); wlr_scene_node_set_enabled(&ssd->shadow.tree->node, show_shadows); if (show_shadows) { set_shadow_geometry(ssd);