diff --git a/src/app.rs b/src/app.rs index 3a32cee..7c95c1c 100644 --- a/src/app.rs +++ b/src/app.rs @@ -754,7 +754,7 @@ impl App { focus.as_ref().map(PathBuf::from), self.directory_buffer .as_ref() - .map(|d| d.scroll_state.current_focus) + .map(|d| d.scroll_state.get_focus()) .unwrap_or(0), ) { Ok(dir) => self.set_directory(dir), @@ -825,15 +825,15 @@ impl App { let bounded = self.config.general.enforce_bounded_index_navigation; if let Some(dir) = self.directory_buffer_mut() { - if dir.scroll_state.current_focus == 0 { + if dir.scroll_state.get_focus() == 0 { if bounded { - dir.scroll_state.set_focus(dir.scroll_state.current_focus); + dir.scroll_state.set_focus(dir.scroll_state.get_focus()); } else { dir.scroll_state.set_focus(dir.total.saturating_sub(1)); } } else { dir.scroll_state - .set_focus(dir.scroll_state.current_focus.saturating_sub(1)); + .set_focus(dir.scroll_state.get_focus().saturating_sub(1)); }; }; Ok(self) @@ -887,7 +887,7 @@ impl App { } dir.scroll_state - .set_focus(dir.scroll_state.current_focus.saturating_sub(index)); + .set_focus(dir.scroll_state.get_focus().saturating_sub(index)); if let Some(n) = self.focused_node() { self.history = history.push(n.absolute_path.clone()); } @@ -912,15 +912,15 @@ impl App { let bounded = self.config.general.enforce_bounded_index_navigation; if let Some(dir) = self.directory_buffer_mut() { - if (dir.scroll_state.current_focus + 1) == dir.total { + if (dir.scroll_state.get_focus() + 1) == dir.total { if bounded { - dir.scroll_state.set_focus(dir.scroll_state.current_focus); + dir.scroll_state.set_focus(dir.scroll_state.get_focus()); } else { dir.scroll_state.set_focus(0); } } else { dir.scroll_state - .set_focus(dir.scroll_state.current_focus + 1); + .set_focus(dir.scroll_state.get_focus() + 1); } }; Ok(self) @@ -975,7 +975,7 @@ impl App { dir.scroll_state.set_focus( dir.scroll_state - .current_focus + .get_focus() .saturating_add(index) .min(dir.total.saturating_sub(1)), ); diff --git a/src/directory_buffer.rs b/src/directory_buffer.rs index b25798a..5d73ec9 100644 --- a/src/directory_buffer.rs +++ b/src/directory_buffer.rs @@ -4,7 +4,7 @@ use time::OffsetDateTime; #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] pub struct ScrollState { - pub current_focus: usize, + current_focus: usize, pub last_focus: Option, pub skipped_rows: usize, } @@ -18,6 +18,10 @@ impl ScrollState { self.current_focus = current_focus; } + pub fn get_focus(&self) -> usize { + self.current_focus + } + pub fn calc_skipped_rows( &mut self, height: usize, diff --git a/src/runner.rs b/src/runner.rs index 7c15bfc..8a96599 100644 --- a/src/runner.rs +++ b/src/runner.rs @@ -89,7 +89,7 @@ fn call( let focus_index = app .directory_buffer .as_ref() - .map(|d| d.scroll_state.current_focus) + .map(|d| d.scroll_state.get_focus()) .unwrap_or_default() .to_string(); @@ -281,7 +281,7 @@ impl Runner { self.focused_path, app.directory_buffer .as_ref() - .map(|d| d.scroll_state.current_focus) + .map(|d| d.scroll_state.get_focus()) .unwrap_or(0), tx_msg_in.clone(), ); @@ -433,7 +433,7 @@ impl Runner { .map(|n| n.relative_path.clone().into()), app.directory_buffer .as_ref() - .map(|d| d.scroll_state.current_focus) + .map(|d| d.scroll_state.get_focus()) .unwrap_or(0), tx_msg_in.clone(), ); @@ -448,7 +448,7 @@ impl Runner { .map(|n| n.relative_path.clone().into()), app.directory_buffer .as_ref() - .map(|d| d.scroll_state.current_focus) + .map(|d| d.scroll_state.get_focus()) .unwrap_or(0), tx_msg_in.clone(), ); diff --git a/src/ui.rs b/src/ui.rs index 2f92c6e..2f62610 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -748,7 +748,7 @@ fn draw_table( .skip(dir.scroll_state.skipped_rows) .take(height) .map(|(index, node)| { - let is_focused = dir.scroll_state.current_focus == index; + let is_focused = dir.scroll_state.get_focus() == index; let is_selected = app .selection @@ -777,12 +777,12 @@ fn draw_table( let node_type = app_config.node_types.get(node); let (relative_index, is_before_focus, is_after_focus) = - match dir.scroll_state.current_focus.cmp(&index) { + match dir.scroll_state.get_focus().cmp(&index) { Ordering::Greater => { - (dir.scroll_state.current_focus - index, true, false) + (dir.scroll_state.get_focus() - index, true, false) } Ordering::Less => { - (index - dir.scroll_state.current_focus, false, true) + (index - dir.scroll_state.get_focus(), false, true) } Ordering::Equal => (0, false, false), };