diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-23 19:58:11 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-23 20:17:01 +0400 |
| commit | 6ba195211bf60c3b753e4167b047b055dd5c129d (patch) | |
| tree | 2f00ec0d82ca5c159091c8fb55af662433b98dd2 /src | |
| parent | afaaf36f27caf73b6c6b394e8f96ae362c454e61 (diff) | |
| download | niri-6ba195211bf60c3b753e4167b047b055dd5c129d.tar.gz niri-6ba195211bf60c3b753e4167b047b055dd5c129d.tar.bz2 niri-6ba195211bf60c3b753e4167b047b055dd5c129d.zip | |
Rename WheelTracker to ScrollTracker
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 2 | ||||
| -rw-r--r-- | src/niri.rs | 10 | ||||
| -rw-r--r-- | src/scroll_tracker.rs | 40 | ||||
| -rw-r--r-- | src/wheel_tracker.rs | 36 |
4 files changed, 46 insertions, 42 deletions
@@ -16,10 +16,10 @@ pub mod niri; pub mod protocols; pub mod render_helpers; pub mod rubber_band; +pub mod scroll_tracker; pub mod swipe_tracker; pub mod ui; pub mod utils; -pub mod wheel_tracker; pub mod window; #[cfg(not(feature = "xdp-gnome-screencast"))] diff --git a/src/niri.rs b/src/niri.rs index 5ba10a82..e2b83930 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -106,6 +106,7 @@ use crate::protocols::screencopy::{Screencopy, ScreencopyManagerState}; use crate::pw_utils::{Cast, PipeWire}; use crate::render_helpers::renderer::NiriRenderer; use crate::render_helpers::{render_to_shm, render_to_texture, render_to_vec}; +use crate::scroll_tracker::ScrollTracker; use crate::ui::config_error_notification::ConfigErrorNotification; use crate::ui::exit_confirm_dialog::ExitConfirmDialog; use crate::ui::hotkey_overlay::HotkeyOverlay; @@ -114,7 +115,6 @@ use crate::utils::spawning::CHILD_ENV; use crate::utils::{ center, center_f64, get_monotonic_time, make_screenshot_path, output_size, write_png_rgba8, }; -use crate::wheel_tracker::WheelTracker; use crate::window::{InitialConfigureState, Mapped, ResolvedWindowRules, Unmapped, WindowRef}; use crate::{animation, niri_render_elements}; @@ -206,8 +206,8 @@ pub struct Niri { pub pointer_focus: PointerFocus, pub tablet_cursor_location: Option<Point<f64, Logical>>, pub gesture_swipe_3f_cumulative: Option<(f64, f64)>, - pub vertical_wheel_tracker: WheelTracker, - pub horizontal_wheel_tracker: WheelTracker, + pub vertical_wheel_tracker: ScrollTracker, + pub horizontal_wheel_tracker: ScrollTracker, pub mods_with_wheel_binds: HashSet<Modifiers>, pub lock_state: LockState, @@ -1321,8 +1321,8 @@ impl Niri { pointer_focus: PointerFocus::default(), tablet_cursor_location: None, gesture_swipe_3f_cumulative: None, - vertical_wheel_tracker: WheelTracker::new(), - horizontal_wheel_tracker: WheelTracker::new(), + vertical_wheel_tracker: ScrollTracker::new(120), + horizontal_wheel_tracker: ScrollTracker::new(120), mods_with_wheel_binds, lock_state: LockState::Unlocked, diff --git a/src/scroll_tracker.rs b/src/scroll_tracker.rs new file mode 100644 index 00000000..fc48ef06 --- /dev/null +++ b/src/scroll_tracker.rs @@ -0,0 +1,40 @@ +pub struct ScrollTracker { + tick: f64, + last: f64, + acc: f64, +} + +impl ScrollTracker { + #[allow(clippy::new_without_default)] + pub fn new(tick: i8) -> Self { + Self { + tick: f64::from(tick), + last: 0., + acc: 0., + } + } + + pub fn accumulate(&mut self, amount: f64) -> i8 { + let changed_direction = (self.last > 0. && amount < 0.) || (self.last < 0. && amount > 0.); + if changed_direction { + self.acc = 0. + } + + self.last = amount; + self.acc += amount; + + let mut ticks = 0; + if self.acc.abs() >= self.tick { + let clamped = self.acc.clamp(-127. * self.tick, 127. * self.tick); + ticks = (clamped as i16 / self.tick as i16) as i8; + self.acc %= self.tick; + } + + ticks + } + + pub fn reset(&mut self) { + self.last = 0.; + self.acc = 0.; + } +} diff --git a/src/wheel_tracker.rs b/src/wheel_tracker.rs deleted file mode 100644 index 0163548a..00000000 --- a/src/wheel_tracker.rs +++ /dev/null @@ -1,36 +0,0 @@ -pub struct WheelTracker { - last: f64, - acc: f64, -} - -impl WheelTracker { - #[allow(clippy::new_without_default)] - pub fn new() -> Self { - Self { last: 0., acc: 0. } - } - - pub fn accumulate(&mut self, amount_v120: f64) -> i8 { - let changed_direction = - (self.last > 0. && amount_v120 < 0.) || (self.last < 0. && amount_v120 > 0.); - if changed_direction { - self.acc = 0. - } - - self.last = amount_v120; - self.acc += amount_v120; - - let mut ticks = 0; - if self.acc.abs() >= 120. { - let clamped = self.acc.clamp(-127. * 120., 127. * 120.); - ticks = (clamped as i16 / 120) as i8; - self.acc %= 120.; - } - - ticks - } - - pub fn reset(&mut self) { - self.last = 0.; - self.acc = 0.; - } -} |
