mirror of
https://github.com/itsjunetime/tdf.git
synced 2026-06-02 08:01:47 -04:00
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:
+4
-2
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user