srdusr
aboutsummaryrefslogtreecommitdiffstats
path: root/Cargo.toml
diff options
context:
space:
mode:
authorsrdusr <[email protected]>2025-08-15 23:53:00 +0200
committersrdusr <[email protected]>2025-08-15 23:53:00 +0200
commitbd6aadf4d166c05f22f1ab6cdfe2e815e071f162 (patch)
tree2059f67bd8f961468a9a76c2ef77af17e1b93c66 /Cargo.toml
parentcc22fe69a68e0fff027d833029aea850976488c8 (diff)
downloadsrdwm-bd6aadf4d166c05f22f1ab6cdfe2e815e071f162.tar.gz
srdwm-bd6aadf4d166c05f22f1ab6cdfe2e815e071f162.zip
Fix a dragged/resized window rendering wrong on a different-scale monitor mid-gesture
Reported live: moving a window onto the other monitor "looks very messed up". This machine's two real monitors have genuinely different scales (eDP-1 at 1.0, HDMI-A-1 at ~0.843) - the exact condition needed to expose this. WindowManager::update_drag/update_resize only corrected w.monitor once, at end_drag (update_resize never corrected it at all, not even at the end) - but state/geometry.rs::sync_geometry reads that field on every motion tick to pick which monitor's scale converts the client's physical size into the logical points xdg_toplevel::configure sends it. Crossing onto a different-scale monitor mid-drag kept every configure computed against the origin monitor's stale scale for the gesture's whole remaining duration, only self-correcting once the button came up. Both functions now re-derive w.monitor from which monitor the window's live geometry actually overlaps, every motion tick - the same Rect::overlaps lookup end_drag already used once at the end, now run continuously instead. end_drag's own fixup stays as a final-word safety net for a drag that starts and ends between two motion ticks. Does not close the related, already-documented gap where a client that doesn't speak wp-fractional-scale-v1 still mismatches once settled on a sub-1.0-scaled monitor - this only fixes the stale-during-the-gesture half. Two new tests, full workspace suite and clippy clean.
Diffstat (limited to 'Cargo.toml')
0 files changed, 0 insertions, 0 deletions