aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-23 19:58:11 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-23 20:17:01 +0400
commit6ba195211bf60c3b753e4167b047b055dd5c129d (patch)
tree2f00ec0d82ca5c159091c8fb55af662433b98dd2 /src
parentafaaf36f27caf73b6c6b394e8f96ae362c454e61 (diff)
downloadniri-6ba195211bf60c3b753e4167b047b055dd5c129d.tar.gz
niri-6ba195211bf60c3b753e4167b047b055dd5c129d.tar.bz2
niri-6ba195211bf60c3b753e4167b047b055dd5c129d.zip
Rename WheelTracker to ScrollTracker
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs2
-rw-r--r--src/niri.rs10
-rw-r--r--src/scroll_tracker.rs40
-rw-r--r--src/wheel_tracker.rs36
4 files changed, 46 insertions, 42 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 0ad55d9c..288aaa07 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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.;
- }
-}