Replace scrollbar state with simple offset struct

Introduce Offset type to track scroll positions and replace
ScrollbarState fields in SkirmishState
Update keybindings, App::draw, Widget impl, and BoardWidget::new
to use mutable references and the new Offset struct.
Adjust imports accordingly.
This commit is contained in:
2026-03-26 21:50:39 +01:00
parent cc179cee03
commit 5a40760151
8 changed files with 59 additions and 32 deletions
+30 -3
View File
@@ -1,12 +1,39 @@
use clap::ValueEnum;
use ratatui::widgets::ScrollbarState;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Offset {
value: usize,
max: usize,
}
impl Offset {
pub fn new() -> Self {
Self { value: 0, max: 0 }
}
pub fn get_value(&self) -> usize {
self.value
}
pub fn set_max(&mut self, max: usize) {
self.max = max;
}
pub fn next(&mut self) {
self.value = self.value.saturating_add(1).min(self.max);
}
pub fn prev(&mut self) {
self.value = self.value.saturating_sub(1).max(0)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct SkirmishState {
pub id: usize,
pub name: &'static str,
pub vertical_scrollbar: ScrollbarState,
pub horizontal_scrollbar: ScrollbarState,
pub vertical_offset: Offset,
pub horizontal_offset: Offset,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ValueEnum)]