fix(screen): focus tab as well as pane when launching existing plugin (#2530)

* fix(screen): focus tab as well as pane when launching existing plugin

* style(fmt): rustfmt
This commit is contained in:
Aram Drevekenin 2023-06-12 22:05:32 +02:00 committed by GitHub
parent 02ee810d82
commit c65017c766
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1472,15 +1472,27 @@ impl Screen {
client_id: ClientId,
) -> Result<bool> {
// true => found and focused, false => not
let err_context = || format!("failed to focus_plugin_pane");
let mut tab_index_and_plugin_pane_id = None;
let all_tabs = self.get_tabs_mut();
for tab in all_tabs.values_mut() {
for (tab_index, tab) in all_tabs.iter_mut() {
if let Some(plugin_pane_id) = tab.find_plugin(&run_plugin) {
tab.focus_pane_with_id(plugin_pane_id, should_float, client_id)
.context("failed to focus plugin pane")?;
return Ok(true);
tab_index_and_plugin_pane_id = Some((*tab_index, plugin_pane_id));
break;
}
}
Ok(false)
match tab_index_and_plugin_pane_id {
Some((tab_index, plugin_pane_id)) => {
self.go_to_tab(tab_index + 1, client_id)?;
self.tabs
.get_mut(&tab_index)
.with_context(err_context)?
.focus_pane_with_id(plugin_pane_id, should_float, client_id)
.context("failed to focus plugin pane")?;
Ok(true)
},
None => Ok(false),
}
}
fn unblock_input(&self) -> Result<()> {