srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/crates/config
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2025-05-23 02:31:00 +0200
committersrdusr <[email protected]>2025-05-23 02:31:00 +0200
commit9fb4f996fe76dc5eeee861e463e62fdb6f7de816 (patch)
treea5288ce4ada9a895baa9031e6af1f77a806abe23 /crates/config
parentc6bdc26541c4aa8d6594de0ba16a20504c44487a (diff)
downloadsrdwm-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/config')
0 files changed, 0 insertions, 0 deletions