aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLunarEclipse <luna@lunareclipse.zone>2025-03-09 18:55:17 +0100
committerIvan Molodetskikh <yalterz@gmail.com>2025-03-31 14:13:20 +0300
commit3b1bf34e21652b2ba6ce621226c05f74dccbefbb (patch)
treee791a057c01fbfd76cfb1a8cea9b638e27263b1d /src
parentbd927b54e09d9f37356874d12b9e57dd28d2d837 (diff)
downloadniri-3b1bf34e21652b2ba6ce621226c05f74dccbefbb.tar.gz
niri-3b1bf34e21652b2ba6ce621226c05f74dccbefbb.tar.bz2
niri-3b1bf34e21652b2ba6ce621226c05f74dccbefbb.zip
Allow negative shadow spread
Diffstat (limited to 'src')
-rw-r--r--src/layout/shadow.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/layout/shadow.rs b/src/layout/shadow.rs
index d91986d1..df018b7b 100644
--- a/src/layout/shadow.rs
+++ b/src/layout/shadow.rs
@@ -57,12 +57,18 @@ impl Shadow {
let offset = self.config.offset;
let offset = Point::from((ceil(offset.x.0), ceil(offset.y.0)));
- let spread = ceil(self.config.spread.0);
+ let spread = self.config.spread.0;
+ let spread = ceil(spread.abs()).copysign(spread);
let offset = offset - Point::from((spread, spread));
let win_radius = radius.fit_to(win_size.w as f32, win_size.h as f32);
- let box_size = win_size + Size::from((spread, spread)).upscale(2.);
+ let box_size = if spread >= 0. {
+ win_size + Size::from((spread, spread)).upscale(2.)
+ } else {
+ // This is a saturating sub.
+ win_size - Size::from((-spread, -spread)).upscale(2.)
+ };
let radius = win_radius.expanded_by(spread as f32);
let shader_size = box_size + Size::from((width, width)).upscale(2.);