mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 20:02:16 +00:00
3449f0def2
* claim: #7744 * Vendor winit 0.30.13 with Wayland touchpad pinch and rotation gestures The 0.30 Wayland backend never binds zwp_pointer_gestures_v1, and WindowEvent::PinchGesture / WindowEvent::RotationGesture only come from the macOS and iOS backends, so a trackpad pinch produces no input at all on Linux and Wayland (two-finger scroll still works, since X11/XWayland reports it as a wheel). egui-winit already maps the events to egui::Event::Zoom and navigation::handle already zooms the camera from that, so the Wayland backend was the only missing piece. Upstream the gesture support is part of winit 0.31 (rust-windowing/winit#4338), which eframe 0.36 cannot use while it still requires winit 0.30, and the 0.30 backport rust-windowing/winit#4778 was closed unmerged. So ship the same fix locally, upstream-style-applied and stripped of example and test targets, with its unit tests for the gesture state machine kept under cargo test -p winit --lib -- pointer_gesture: - src/platform_impl/linux/wayland/seat/pointer/pointer_gesture.rs: bind the global (versions 1..=3), one pinch gesture object per pointer, destroyed before the pointer is released; begin/update/end become the two events for the window the gesture began over. Two fingers only; the protocol's scale is relative to the gesture's beginning, so the event carries the change since the previous update; rotation is negated to winit's counterclockwise degrees; a non-finite scale is dropped, and so are updates of a gesture whose begin we never saw. - seat state wiring: bind the global, track and drop the gesture object. - wayland-protocols' unstable feature, platform notes on both events, changelog, patch-section entry in Cargo.toml, vendor/README, and Linux/Wayland notes in the troubleshooting guide and the UI tour. Retire this vendoring once an eframe release consumes winit 0.31 or later; the cleaned branch is kept as https://github.com/purp0w/winit/tree/wayland-pinch-gestures. * ci: retrigger after flaky occurrence-cache test --------- Co-authored-by: Francisco das Chagas Danta Filho <dev@dantas-filho.me>