Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
fix: exempt status segments from the backplate corner clip
Status-bar segments draw their own module-box corners. The window
backplate clip (corner_radius x squircle span factor, ~35px at the
current config) is invisible on a bar-thin segment because the
half-extent cap keeps it inside the transparent band, but once a
segment EXPANDS for its in-surface menu the cap stops binding and the
clip carves visible sweeps into the menu box corners. Radius 0 for
status windows in both blur/clip paths (set_rendering_state and the
pan-path rebuild), which must agree since they drive the same nodes.
Co-Authored-By: Claude Fable 5 <[email protected]>
src/server/window.rs | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/server/window.rs b/src/server/window.rs
index c513e09..cf60474 100644
--- a/src/server/window.rs
+++ b/src/server/window.rs
@@ -2027,6 +2027,13 @@ impl Window {
let w = self.rendering_sent.width as i32;
let h = self.rendering_sent.height as i32;
w.min(h) / 2
+ } else if is_status {
+ // Status segments draw their own module-box corners. The
+ // backplate clip is invisible on a bar-thin segment (the
+ // half-extent cap keeps it inside the transparent band) but
+ // carves visible sweeps into an EXPANDED segment's in-surface
+ // menu box once the cap stops binding.
+ 0
} else if self.wm_requested.ssd || is_cce_app {
(*self.server).wm.layout.backplate_corner_radius
} else {
@@ -2470,6 +2477,10 @@ impl Window {
let w = self.rendering_sent.width as i32;
let h = self.rendering_sent.height as i32;
w.min(h) / 2
+ } else if is_status {
+ // Same status exemption as set_rendering_state — the two
+ // paths drive the same nodes and must agree.
+ 0
} else if self.wm_requested.ssd || is_cce_app {
(*self.server).wm.layout.backplate_corner_radius
} else {