Add ctrl+mousewheel zoom control for fill-screen mode (#94)

* Add ctrl+mousewheel zoom control for fill-screen mode

  Enables mouse-based zooming; Uses ctrl+scroll up/down to
  increase/decrease zoom level while in fill-screen mode, with proper
  mouse capture handling.

* removed unused include
This commit is contained in:
Per Hurtig
2025-08-21 04:57:55 +02:00
committed by GitHub
parent 7064be32f2
commit 8b03329bba
2 changed files with 34 additions and 15 deletions
+4 -2
View File
@@ -239,7 +239,8 @@ async fn main() -> Result<(), WrappedErr> {
execute!(
term.backend_mut(),
EnterAlternateScreen,
crossterm::cursor::Hide
crossterm::cursor::Hide,
crossterm::event::EnableMouseCapture
)
.map_err(|e| {
WrappedErr(
@@ -307,7 +308,8 @@ async fn main() -> Result<(), WrappedErr> {
execute!(
term.backend_mut(),
LeaveAlternateScreen,
crossterm::cursor::Show
crossterm::cursor::Show,
crossterm::event::DisableMouseCapture
)
.unwrap();
disable_raw_mode().unwrap();
+30 -13
View File
@@ -624,7 +624,8 @@ impl Tui {
execute!(
&mut backend,
LeaveAlternateScreen,
crossterm::cursor::Show
crossterm::cursor::Show,
crossterm::event::DisableMouseCapture
)
.unwrap();
disable_raw_mode().unwrap();
@@ -638,7 +639,8 @@ impl Tui {
execute!(
&mut backend,
EnterAlternateScreen,
crossterm::cursor::Hide
crossterm::cursor::Hide,
crossterm::event::EnableMouseCapture
)
.unwrap();
@@ -754,17 +756,32 @@ impl Tui {
_ => None
}
}
Event::Mouse(mouse) => match mouse.kind {
MouseEventKind::ScrollRight =>
self.change_page(PageChange::Next, ChangeAmount::Single),
MouseEventKind::ScrollDown =>
self.change_page(PageChange::Next, ChangeAmount::WholeScreen),
MouseEventKind::ScrollLeft =>
self.change_page(PageChange::Prev, ChangeAmount::Single),
MouseEventKind::ScrollUp =>
self.change_page(PageChange::Prev, ChangeAmount::WholeScreen),
_ => None
},
Event::Mouse(mouse) => {
if mouse.modifiers.contains(KeyModifiers::CONTROL)
&& self.is_kitty
&& self.zoom.is_some()
{
match mouse.kind {
MouseEventKind::ScrollUp =>
self.update_zoom(|z| z.level = z.level.saturating_add(1).min(0)),
MouseEventKind::ScrollDown =>
self.update_zoom(|z| z.level = z.level.saturating_sub(1)),
_ => None
}
} else {
match mouse.kind {
MouseEventKind::ScrollRight =>
self.change_page(PageChange::Next, ChangeAmount::Single),
MouseEventKind::ScrollDown =>
self.change_page(PageChange::Next, ChangeAmount::WholeScreen),
MouseEventKind::ScrollLeft =>
self.change_page(PageChange::Prev, ChangeAmount::Single),
MouseEventKind::ScrollUp =>
self.change_page(PageChange::Prev, ChangeAmount::WholeScreen),
_ => None
}
}
}
Event::Resize(_, _) => Some(InputAction::Redraw),
_ => None
}