From 68ca143c0d8f5a8b871cafc7e283423a113f6959 Mon Sep 17 00:00:00 2001 From: Canop Date: Sun, 27 Mar 2022 08:23:44 +0200 Subject: add the (already documented) capture_mouse conf item See https://github.com/Canop/broot/issues/238 --- CHANGELOG.md | 3 +++ Cargo.lock | 2 +- Cargo.toml | 2 +- src/app/app_context.rs | 10 ++++++++-- src/cli/mod.rs | 5 ++--- src/conf/conf.rs | 5 +++++ src/launchable.rs | 10 +++++----- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c860aaa..42bf501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +### next +- fix the `capture_mouse` config item which was described in documentation but not usable (the non documented `disable_mouse_capture` argument was working and is kept for compatibility) + ### v1.9.4 - 2022-03-07 - don't query size of remote filesystems anymore. This fixes some 10 seconds hangs in some cases (e.g. filesystem screen) when a remote filesystem is unreachable diff --git a/Cargo.lock b/Cargo.lock index 2bd4226..17819de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -140,7 +140,7 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "broot" -version = "1.9.4" +version = "1.9.5-dev" dependencies = [ "ahash 0.7.6", "ansi_colours", diff --git a/Cargo.toml b/Cargo.toml index 848d620..9a79210 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "broot" -version = "1.9.4" +version = "1.9.5-dev" authors = ["dystroy "] repository = "https://github.com/Canop/broot" documentation = "https://dystroy.org/broot" diff --git a/src/app/app_context.rs b/src/app/app_context.rs index adb27ad..542b422 100644 --- a/src/app/app_context.rs +++ b/src/app/app_context.rs @@ -61,7 +61,8 @@ pub struct AppContext { /// modal (aka "vim) mode enabled pub modal: bool, - pub mouse_capture_disabled: bool, + /// Whether to support mouse interactions + pub capture_mouse: bool, /// max number of panels (including preview) that can be /// open. Guaranteed to be at least 2. @@ -110,6 +111,11 @@ impl AppContext { let max_panels_count = config.max_panels_count .unwrap_or(2) .clamp(2, 100); + let capture_mouse = match (config.capture_mouse, config.disable_mouse_capture) { + (Some(b), _) => b, // the new "capture_mouse" argument takes precedence + (_, Some(b)) => !b, + _ => true, + }; Ok(Self { config_paths, launch_args, @@ -123,7 +129,7 @@ impl AppContext { true_colors, icons, modal: config.modal.unwrap_or(false), - mouse_capture_disabled: config.disable_mouse_capture.unwrap_or(false), + capture_mouse, max_panels_count, quit_on_last_cancel: config.quit_on_last_cancel.unwrap_or(false), file_sum_threads_count, diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 6c72b1b..3bc64c5 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -190,12 +190,11 @@ pub fn run() -> Result, ProgramError> { let app = App::new(&context)?; w.queue(EnterAlternateScreen)?; w.queue(cursor::Hide)?; - let capture_mouse = config.disable_mouse_capture != Some(true); - if capture_mouse { + if context.capture_mouse { w.queue(EnableMouseCapture)?; } let r = app.run(&mut w, &context, &config); - if capture_mouse { + if context.capture_mouse { w.queue(DisableMouseCapture)?; } w.queue(cursor::Show)?; diff --git a/src/conf/conf.rs b/src/conf/conf.rs index dde306c..f94db83 100644 --- a/src/conf/conf.rs +++ b/src/conf/conf.rs @@ -59,9 +59,13 @@ pub struct Conf { #[serde(alias="search-modes")] pub search_modes: Option>, + /// Obsolete, kept for compatibility: you should now use capture_mouse #[serde(alias="disable-mouse-capture")] pub disable_mouse_capture: Option, + #[serde(alias="capture-mouse")] + pub capture_mouse: Option, + #[serde(alias="cols-order")] pub cols_order: Option, @@ -147,6 +151,7 @@ impl Conf { overwrite!(self, icon_theme, conf); overwrite!(self, syntax_theme, conf); overwrite!(self, disable_mouse_capture, conf); + overwrite!(self, capture_mouse, conf); overwrite!(self, true_colors, conf); overwrite!(self, show_selection_mark, conf); overwrite!(self, cols_order, conf); diff --git a/src/launchable.rs b/src/launchable.rs index 7c602d0..9378cb2 100644 --- a/src/launchable.rs +++ b/src/launchable.rs @@ -52,7 +52,7 @@ pub enum Launchable { exe: String, args: Vec, working_dir: Option, - mouse_capture_disabled: bool, + capture_mouse: bool, }, /// open a path @@ -110,7 +110,7 @@ impl Launchable { exe, args: parts.collect(), working_dir, - mouse_capture_disabled: con.mouse_capture_disabled, + capture_mouse: con.capture_mouse, }), None => Err(io::Error::new(io::ErrorKind::Other, "Empty launch string")), } @@ -133,7 +133,7 @@ impl Launchable { working_dir, exe, args, - mouse_capture_disabled, + capture_mouse, } => { debug!("working_dir: {:?}", &working_dir); // we restore the normal terminal in case the executable @@ -143,7 +143,7 @@ impl Launchable { if let Some(ref mut w) = &mut w { w.queue(cursor::Show).unwrap(); w.queue(LeaveAlternateScreen).unwrap(); - if !mouse_capture_disabled { + if *capture_mouse { w.queue(DisableMouseCapture).unwrap(); } terminal::disable_raw_mode().unwrap(); @@ -164,7 +164,7 @@ impl Launchable { }); if let Some(ref mut w) = &mut w { terminal::enable_raw_mode().unwrap(); - if !mouse_capture_disabled { + if *capture_mouse { w.queue(EnableMouseCapture).unwrap(); } w.queue(EnterAlternateScreen).unwrap(); -- cgit v1.2.3