From bb569dfa00485545a657bff1edfe29e6eaa699d8 Mon Sep 17 00:00:00 2001 From: Tadeo Kondrak Date: Fri, 14 Mar 2025 13:21:58 -0600 Subject: [PATCH] ei: Fix flipped scroll axes --- src/cli/seat_test.rs | 20 +++++++++++--------- src/ei/ei_ifs/ei_scroll.rs | 13 +++++++------ src/ei/ei_ifs/ei_seat.rs | 20 ++++++++++++++------ 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/cli/seat_test.rs b/src/cli/seat_test.rs index 6afc569b..c587a0dc 100644 --- a/src/cli/seat_test.rs +++ b/src/cli/seat_test.rs @@ -2,7 +2,9 @@ use { crate::{ cli::{GlobalArgs, SeatTestArgs}, fixed::Fixed, - ifs::wl_seat::wl_pointer::{CONTINUOUS, FINGER, PendingScroll, WHEEL}, + ifs::wl_seat::wl_pointer::{ + CONTINUOUS, FINGER, HORIZONTAL_SCROLL, PendingScroll, VERTICAL_SCROLL, WHEEL, + }, tools::tool_client::{Handle, ToolClient, with_tool_client}, wire::{ jay_compositor::{GetSeats, Seat, SeatEvents}, @@ -188,14 +190,14 @@ async fn run(seat_test: Rc) { let st = seat_test.clone(); AxisFrame::handle(tc, se, ps.clone(), move |ps, ev| { let source = ps.source.take(); - let px_x = ps.px[0].take(); - let px_y = ps.px[1].take(); - let stop_x = ps.stop[0].take(); - let stop_y = ps.stop[1].take(); - let v120_x = ps.v120[0].take(); - let v120_y = ps.v120[1].take(); - let inverted_x = ps.inverted[0].get(); - let inverted_y = ps.inverted[1].get(); + let px_x = ps.px[HORIZONTAL_SCROLL as usize].take(); + let px_y = ps.px[VERTICAL_SCROLL as usize].take(); + let stop_x = ps.stop[HORIZONTAL_SCROLL as usize].take(); + let stop_y = ps.stop[VERTICAL_SCROLL as usize].take(); + let v120_x = ps.v120[HORIZONTAL_SCROLL as usize].take(); + let v120_y = ps.v120[VERTICAL_SCROLL as usize].take(); + let inverted_x = ps.inverted[HORIZONTAL_SCROLL as usize].get(); + let inverted_y = ps.inverted[VERTICAL_SCROLL as usize].get(); if all || ev.seat == seat { if all { print!("Seat: {}, ", st.name(ev.seat)); diff --git a/src/ei/ei_ifs/ei_scroll.rs b/src/ei/ei_ifs/ei_scroll.rs index 9f6efed4..b634c763 100644 --- a/src/ei/ei_ifs/ei_scroll.rs +++ b/src/ei/ei_ifs/ei_scroll.rs @@ -6,6 +6,7 @@ use { ei_object::{EiObject, EiVersion}, }, fixed::Fixed, + ifs::wl_seat::wl_pointer::{HORIZONTAL_SCROLL, VERTICAL_SCROLL}, leaks::Tracker, wire_ei::{ EiScrollId, @@ -65,8 +66,8 @@ impl EiScrollRequestHandler for EiScroll { } fn client_scroll(&self, req: ClientScroll, _slf: &Rc) -> Result<(), Self::Error> { - self.device.scroll_px[0].set(Some(req.x)); - self.device.scroll_px[1].set(Some(req.y)); + self.device.scroll_px[HORIZONTAL_SCROLL as usize].set(Some(req.x)); + self.device.scroll_px[VERTICAL_SCROLL as usize].set(Some(req.y)); Ok(()) } @@ -75,8 +76,8 @@ impl EiScrollRequestHandler for EiScroll { req: ClientScrollDiscrete, _slf: &Rc, ) -> Result<(), Self::Error> { - self.device.scroll_v120[0].set(Some(req.x)); - self.device.scroll_v120[1].set(Some(req.y)); + self.device.scroll_v120[HORIZONTAL_SCROLL as usize].set(Some(req.x)); + self.device.scroll_v120[VERTICAL_SCROLL as usize].set(Some(req.y)); Ok(()) } @@ -85,8 +86,8 @@ impl EiScrollRequestHandler for EiScroll { req: ClientScrollStop, _slf: &Rc, ) -> Result<(), Self::Error> { - self.device.scroll_stop[0].set(Some(req.x != 0)); - self.device.scroll_stop[1].set(Some(req.y != 0)); + self.device.scroll_stop[HORIZONTAL_SCROLL as usize].set(Some(req.x != 0)); + self.device.scroll_stop[VERTICAL_SCROLL as usize].set(Some(req.y != 0)); Ok(()) } } diff --git a/src/ei/ei_ifs/ei_seat.rs b/src/ei/ei_ifs/ei_seat.rs index 45264283..9fde3f2a 100644 --- a/src/ei/ei_ifs/ei_seat.rs +++ b/src/ei/ei_ifs/ei_seat.rs @@ -16,7 +16,10 @@ use { ei_object::{EiInterface, EiObject, EiVersion}, }, fixed::Fixed, - ifs::wl_seat::{PhysicalKeyboardId, WlSeatGlobal, wl_pointer::PendingScroll}, + ifs::wl_seat::{ + PhysicalKeyboardId, WlSeatGlobal, + wl_pointer::{HORIZONTAL_SCROLL, PendingScroll, VERTICAL_SCROLL}, + }, keyboard::{DynKeyboardState, KeyboardState, KeyboardStateId}, leaks::Tracker, tree::Node, @@ -163,14 +166,19 @@ impl EiSeat { } if let Some(b) = self.scroll.get() { b.send_scroll( - ps.px[0].get().unwrap_or_default(), - ps.px[1].get().unwrap_or_default(), + ps.px[HORIZONTAL_SCROLL as usize].get().unwrap_or_default(), + ps.px[VERTICAL_SCROLL as usize].get().unwrap_or_default(), ); b.send_scroll_discrete( - ps.v120[0].get().unwrap_or_default(), - ps.v120[1].get().unwrap_or_default(), + ps.v120[HORIZONTAL_SCROLL as usize] + .get() + .unwrap_or_default(), + ps.v120[VERTICAL_SCROLL as usize].get().unwrap_or_default(), + ); + b.send_scroll_stop( + ps.stop[HORIZONTAL_SCROLL as usize].get(), + ps.stop[VERTICAL_SCROLL as usize].get(), ); - b.send_scroll_stop(ps.stop[0].get(), ps.stop[1].get()); b.device.send_frame(self.client.serial(), time_usec); } }