mirror of
https://github.com/ClementTsang/bottom.git
synced 2025-07-26 23:24:20 +02:00
fix: Disable mouse capture when disable_click
is set (#1706)
This commit is contained in:
parent
f8b8a21748
commit
3330c1f1e7
23
src/lib.rs
23
src/lib.rs
@ -62,7 +62,7 @@ fn try_drawing(
|
|||||||
painter: &mut canvas::Painter,
|
painter: &mut canvas::Painter,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
if let Err(err) = painter.draw_data(terminal, app) {
|
if let Err(err) = painter.draw_data(terminal, app) {
|
||||||
cleanup_terminal(terminal)?;
|
cleanup_terminal(terminal, &app.app_config_fields)?;
|
||||||
Err(err.into())
|
Err(err.into())
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -71,12 +71,14 @@ fn try_drawing(
|
|||||||
|
|
||||||
/// Clean up the terminal before returning it to the user.
|
/// Clean up the terminal before returning it to the user.
|
||||||
fn cleanup_terminal(
|
fn cleanup_terminal(
|
||||||
terminal: &mut Terminal<CrosstermBackend<std::io::Stdout>>,
|
terminal: &mut Terminal<CrosstermBackend<std::io::Stdout>>, app_config_fields: &AppConfigFields,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
disable_raw_mode()?;
|
disable_raw_mode()?;
|
||||||
|
if app_config_fields.disable_click {
|
||||||
|
execute!(terminal.backend_mut(), DisableMouseCapture)?;
|
||||||
|
}
|
||||||
execute!(
|
execute!(
|
||||||
terminal.backend_mut(),
|
terminal.backend_mut(),
|
||||||
DisableMouseCapture,
|
|
||||||
DisableBracketedPaste,
|
DisableBracketedPaste,
|
||||||
LeaveAlternateScreen,
|
LeaveAlternateScreen,
|
||||||
Show,
|
Show,
|
||||||
@ -338,13 +340,12 @@ pub fn start_bottom(enable_error_hook: &mut bool) -> anyhow::Result<()> {
|
|||||||
*enable_error_hook = true;
|
*enable_error_hook = true;
|
||||||
|
|
||||||
let mut stdout_val = stdout();
|
let mut stdout_val = stdout();
|
||||||
execute!(
|
execute!(stdout_val, Hide, EnterAlternateScreen, EnableBracketedPaste)?;
|
||||||
stdout_val,
|
if app.app_config_fields.disable_click {
|
||||||
Hide,
|
execute!(stdout_val, DisableMouseCapture)?;
|
||||||
EnterAlternateScreen,
|
} else {
|
||||||
EnableBracketedPaste,
|
execute!(stdout_val, EnableMouseCapture)?;
|
||||||
EnableMouseCapture,
|
}
|
||||||
)?;
|
|
||||||
enable_raw_mode()?;
|
enable_raw_mode()?;
|
||||||
|
|
||||||
let mut terminal = Terminal::new(CrosstermBackend::new(stdout_val))?;
|
let mut terminal = Terminal::new(CrosstermBackend::new(stdout_val))?;
|
||||||
@ -456,7 +457,7 @@ pub fn start_bottom(enable_error_hook: &mut bool) -> anyhow::Result<()> {
|
|||||||
// I think doing it in this order is safe...
|
// I think doing it in this order is safe...
|
||||||
// TODO: maybe move the cancellation token to the ctrl-c handler?
|
// TODO: maybe move the cancellation token to the ctrl-c handler?
|
||||||
cancellation_token.cancel();
|
cancellation_token.cancel();
|
||||||
cleanup_terminal(&mut terminal)?;
|
cleanup_terminal(&mut terminal, &app.app_config_fields)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user