diff --git a/src/input/mod.rs b/src/input/mod.rs index 8ddab8dd4..3fb6b1a77 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -2021,6 +2021,8 @@ impl State { } fn on_pointer_axis<I: InputBackend>(&mut self, event: I::PointerAxisEvent) { + let pointer = &self.niri.seat.get_pointer().unwrap(); + let source = event.source(); // We received an event for the regular pointer, so show it now. This is also needed for @@ -2167,14 +2169,16 @@ impl State { } } + self.update_pointer_contents(); + let scroll_factor = match source { AxisSource::Wheel => self.niri.config.borrow().input.mouse.scroll_factor, AxisSource::Finger => self.niri.config.borrow().input.touchpad.scroll_factor, _ => None, }; - let window_scroll_factor = self - .niri - .window_under_cursor() + let window_scroll_factor = pointer + .current_focus() + .and_then(|focused| self.niri.layout.find_window_and_output(&focused).unzip().0) .and_then(|window| window.rules().scroll_factor); let scroll_factor = scroll_factor.map(|x| x.0).unwrap_or(1.) * window_scroll_factor.unwrap_or(1.); @@ -2218,9 +2222,6 @@ impl State { } } - self.update_pointer_contents(); - - let pointer = &self.niri.seat.get_pointer().unwrap(); pointer.axis(self, frame); pointer.frame(self); }