scroll_tracker.rs 609 B
const THRESHOLD: i8 = 50;
pub enum ScrollAction {
Previous,
Next,
None,
}
pub struct ScrollTracker {
tracker: i8,
}
impl ScrollTracker {
pub fn new() -> Self {
Self { tracker: 0 }
}
pub fn scroll(&mut self, scroll: i8) -> ScrollAction {
self.tracker = self.tracker.saturating_add(scroll);
if self.tracker < -THRESHOLD {
self.tracker = 0;
ScrollAction::Previous
} else if self.tracker > 50 {
self.tracker = 0;
ScrollAction::Next
} else {
ScrollAction::None
}
}
}