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!( execute!(
term.backend_mut(), term.backend_mut(),
EnterAlternateScreen, EnterAlternateScreen,
crossterm::cursor::Hide crossterm::cursor::Hide,
crossterm::event::EnableMouseCapture
) )
.map_err(|e| { .map_err(|e| {
WrappedErr( WrappedErr(
@@ -307,7 +308,8 @@ async fn main() -> Result<(), WrappedErr> {
execute!( execute!(
term.backend_mut(), term.backend_mut(),
LeaveAlternateScreen, LeaveAlternateScreen,
crossterm::cursor::Show crossterm::cursor::Show,
crossterm::event::DisableMouseCapture
) )
.unwrap(); .unwrap();
disable_raw_mode().unwrap(); disable_raw_mode().unwrap();
+21 -4
View File
@@ -624,7 +624,8 @@ impl Tui {
execute!( execute!(
&mut backend, &mut backend,
LeaveAlternateScreen, LeaveAlternateScreen,
crossterm::cursor::Show crossterm::cursor::Show,
crossterm::event::DisableMouseCapture
) )
.unwrap(); .unwrap();
disable_raw_mode().unwrap(); disable_raw_mode().unwrap();
@@ -638,7 +639,8 @@ impl Tui {
execute!( execute!(
&mut backend, &mut backend,
EnterAlternateScreen, EnterAlternateScreen,
crossterm::cursor::Hide crossterm::cursor::Hide,
crossterm::event::EnableMouseCapture
) )
.unwrap(); .unwrap();
@@ -754,7 +756,20 @@ impl Tui {
_ => None _ => None
} }
} }
Event::Mouse(mouse) => match mouse.kind { 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 => MouseEventKind::ScrollRight =>
self.change_page(PageChange::Next, ChangeAmount::Single), self.change_page(PageChange::Next, ChangeAmount::Single),
MouseEventKind::ScrollDown => MouseEventKind::ScrollDown =>
@@ -764,7 +779,9 @@ impl Tui {
MouseEventKind::ScrollUp => MouseEventKind::ScrollUp =>
self.change_page(PageChange::Prev, ChangeAmount::WholeScreen), self.change_page(PageChange::Prev, ChangeAmount::WholeScreen),
_ => None _ => None
}, }
}
}
Event::Resize(_, _) => Some(InputAction::Redraw), Event::Resize(_, _) => Some(InputAction::Redraw),
_ => None _ => None
} }