diff options
| author | srdusr <[email protected]> | 2025-05-23 02:31:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2025-05-23 02:31:00 +0200 |
| commit | 9fb4f996fe76dc5eeee861e463e62fdb6f7de816 (patch) | |
| tree | a5288ce4ada9a895baa9031e6af1f77a806abe23 /crates/macos | |
| parent | c6bdc26541c4aa8d6594de0ba16a20504c44487a (diff) | |
| download | srdwm-9fb4f996fe76dc5eeee861e463e62fdb6f7de816.tar.gz srdwm-9fb4f996fe76dc5eeee861e463e62fdb6f7de816.zip | |
Fix the border ring's inner cut using the wrong circle for undecorated windows
carve_inner_corner_pixel (an earlier ring fix) cut the
border strip's own disk using an inner circle at the *same* centre as
the outer cut, radius - border_width - correct when a titlebar sits
underneath (it shares that exact circle, by construction), but wrong
whenever client content sits underneath instead: content's own
rounded-corner mask (rounded_corners_pixman.rs's apply_corner_mask) is
centred radius from *its own* buffer's edges, and that buffer starts
border_width rows/columns inside the border strip's - a same-radius
circle offset (border_width, border_width) diagonally from the
border's own outer one, not a smaller concentric one. Reusing the
titlebar-style ring left a real, if very small, gap along part of the
seam and a thin sliver of double coverage along the rest - reported
live, at extreme zoom against a solid-colour wallpaper (chosen
specifically to make a sub-pixel gap easy to spot against, unlike the
usual desktop image): "very tiny gaps... corner radius does not
match."
round_top_corners/round_bottom_corners's own `inner_radius: Option<u32>`
parameter is now `inner: Option<InnerRing>`, an explicit (center_row,
center_col, radius) rather than an implicit "same centre, smaller
radius" - InnerRing's own doc comment has the full geometry for both
cases. render_border_top gained a `decorated` parameter to pick the
right one (titlebar-aligned when true, content-aligned - centre
shifted by border_width on both axes, radius unchanged - when false);
render_border_bottom always uses the content-aligned ring, since this
compositor never draws a bottom titlebar.
apply_corner_mask (rounded_corners_pixman.rs) made pub(crate) so the
new regression test can build a real masked content buffer via the
actual production function, not a reimplementation of its math.
border_top_and_content_mask_have_no_gap_along_the_corner_diagonal_when_undecorated
checks coverage along the diagonal ray between the two circles'
centres - the direction they're actually offset along, and so the
worst case for a gap opening up between them - against the real
render_border_top/apply_corner_mask output, not a hand-rederived
formula.
Diffstat (limited to 'crates/macos')
0 files changed, 0 insertions, 0 deletions