Improve wheel mode

This commit is contained in:
liberodark 2025-06-19 19:53:07 +02:00 • committed by Jeremy Soller
parent f52df3d89e
commit f570b4089c

View file

@ -43,7 +43,10 @@ use std::{
time::{Duration, Instant},
};
use crate::{key_bind::key_binds, terminal::Metadata, Action, Terminal, TerminalScroll};
use crate::{
key_bind::key_binds, mouse_reporter::MouseReporter, terminal::Metadata, Action, Terminal,
TerminalScroll,
};
pub struct TerminalBox<'a, Message> {
terminal: &'a Mutex<Terminal>,
@ -1194,6 +1197,15 @@ where
let col = x / terminal.size().cell_width;
let row = y / terminal.size().cell_height;
terminal.scroll_mouse(delta, &state.modifiers, col as u32, row as u32);
} else {
if terminal.term.lock().mode().contains(TermMode::ALT_SCREEN) {
MouseReporter::report_mouse_wheel_as_arrows(
&terminal,
terminal.size().cell_width,
terminal.size().cell_height,
delta,
);
status = Status::Captured;
} else {
match delta {
ScrollDelta::Lines { x: _, y } => {
@ -1225,6 +1237,7 @@ where
}
}
}
}
{
let x = p.x - self.padding.left;
let y = p.y - self.padding.top;