diff options
| author | srdusr <[email protected]> | 2024-08-23 22:23:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2024-08-23 22:23:00 +0200 |
| commit | 281378656bdf9520e5f89d31864b9b2f822d4e3e (patch) | |
| tree | bb858d6c79ae8ca2c423cd366c10ded90fa8a97e /crates/wayland/src/udev/platform.rs | |
| parent | 78da614d67c09e197dffc1cebb1c5ce2357c7128 (diff) | |
| download | srdwm-281378656bdf9520e5f89d31864b9b2f822d4e3e.tar.gz srdwm-281378656bdf9520e5f89d31864b9b2f822d4e3e.zip | |
Round the bottom border strip's corners to match the top
MISSING.md listed the border frame's bottom/left/right strips as
staying square while the top one (and the titlebar above it) rounds --
"unrelated to client content rounding... not attempted." The left/
right strips genuinely can't participate (border_strips' geometry has
them span only the height between the top and bottom strips, no
corner to round), but the bottom strip is exactly the same shape as
the top one and had no reason left to stay square.
decoration::render_border_bottom mirrors render_border_top exactly
(round_bottom_corners mirrors round_top_corners), cached the same way
in a new border_bottom_decorations map, and drawn in both render loops
via the same all-or-nothing occlusion check the top strip already
uses - pulled out of the left/right strips' per-fragment occlusion
splitting into its own dedicated bitmap path, matching top's existing
trade-off (cropping a rounded bitmap's source rect per fragment is
real extra work for a strip this thin) rather than inventing a new one.
One real bug caught before it shipped: round_bottom_corners' corner-
centre math (height - r - 1) panics on unsigned underflow whenever the
radius clamp lands on the strip's own full height (a real, common case
- a 2px-thick test strip hits it immediately). Fixed by computing the
centre as a signed offset instead, mirroring how the existing dx/dy
distance math already avoids the same class of issue.
Diffstat (limited to 'crates/wayland/src/udev/platform.rs')
| -rw-r--r-- | crates/wayland/src/udev/platform.rs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/crates/wayland/src/udev/platform.rs b/crates/wayland/src/udev/platform.rs index 8043e20..f562da2 100644 --- a/crates/wayland/src/udev/platform.rs +++ b/crates/wayland/src/udev/platform.rs @@ -178,6 +178,7 @@ impl UdevPlatform { dead_layer_surfaces: HashSet::new(), decorations: HashMap::new(), border_top_decorations: HashMap::new(), + border_bottom_decorations: HashMap::new(), shadow_buffers: HashMap::new(), rounded_corners_program: None, content_epoch: HashMap::new(), |