feat: support horizontal mouse scrolling in buffers

This commit is contained in:
2026-10-11 14:10:20 +02:00
parent 0ca0d89b9e
commit 0d4601b612
6 changed files with 272 additions and 31 deletions
+29
View File
@@ -609,6 +609,35 @@ impl DiffState {
}
}
pub(crate) fn bound_horizontal(&self, focus: Focus, left: usize, width: usize) -> usize {
let columns = match focus {
Focus::Before => self.max_before,
Focus::After => self.max_after,
Focus::Files => return 0,
};
left.min(columns.saturating_add(1).saturating_sub(width.max(1)))
}
pub(crate) fn scroll_horizontal(&mut self, focus: Focus, right: bool, width: usize) {
let left = match focus {
Focus::Before => self.left_before,
Focus::After => self.left_after,
Focus::Files => return,
};
let left = if right {
left.saturating_add(3)
} else {
left.saturating_sub(3)
};
let left = self.bound_horizontal(focus, left, width);
match focus {
Focus::Before => self.left_before = left,
Focus::After => self.left_after = left,
Focus::Files => unreachable!(),
}
self.follow_caret = false;
}
pub(crate) fn first_text_focus(&self) -> Focus {
if self.pane_layout() == PaneLayout::After {
Focus::After