diff --git a/docs/changelog.md b/docs/changelog.md index 3e0a6c380..9d4a9b229 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -30,6 +30,8 @@ As features stabilize some brief notes about them will accumulate here. [tiling_desktop_environments](config/lua/config/tiling_desktop_environments.md). * Added eigth block corner glyphs to custom block glyphs. Thanks to @joouha! #3559 * Don't hide mouse cursor when pressing only modifier keys. #3570 +* [PaneSelect](config/lua/keyassignment/PaneSelect.md) will now un-zoom to show + all panes, then re-zoom after performing its action. #3573 #### New diff --git a/wezterm-gui/src/termwindow/paneselect.rs b/wezterm-gui/src/termwindow/paneselect.rs index d4e85e1d2..b68979a91 100644 --- a/wezterm-gui/src/termwindow/paneselect.rs +++ b/wezterm-gui/src/termwindow/paneselect.rs @@ -19,6 +19,7 @@ pub struct PaneSelector { selection: RefCell, alphabet: String, mode: PaneSelectMode, + was_zoomed: bool, } impl PaneSelector { @@ -28,12 +29,22 @@ impl PaneSelector { } else { args.alphabet.clone() }; + + // Ensure that we are un-zoomed and remember the original state + let was_zoomed = { + let mux = Mux::get(); + mux.get_active_tab_for_window(term_window.mux_window_id) + .map(|tab| tab.set_zoomed(false)) + .unwrap_or(false) + }; + Self { element: RefCell::new(None), labels: RefCell::new(vec![]), selection: RefCell::new(String::new()), alphabet, mode: args.mode, + was_zoomed, } } @@ -167,6 +178,10 @@ impl PaneSelector { } } + if self.was_zoomed { + tab.set_zoomed(true); + } + term_window.cancel_modal(); Ok(()) }