fix(panes): refocus pane properly on tab change (#2734)
* fix(panes): stacked panes focus bug * style(fmt): rustfmt
This commit is contained in:
parent
1ccc973c68
commit
b587125f06
4 changed files with 15 additions and 12 deletions
|
|
@ -696,8 +696,9 @@ impl FloatingPanes {
|
||||||
self.focus_pane_for_all_clients(pane_id);
|
self.focus_pane_for_all_clients(pane_id);
|
||||||
}
|
}
|
||||||
pub fn focus_pane_if_client_not_focused(&mut self, pane_id: PaneId, client_id: ClientId) {
|
pub fn focus_pane_if_client_not_focused(&mut self, pane_id: PaneId, client_id: ClientId) {
|
||||||
if self.active_panes.get(&client_id).is_none() {
|
match self.active_panes.get(&client_id) {
|
||||||
self.focus_pane(pane_id, client_id)
|
Some(already_focused_pane_id) => self.focus_pane(*already_focused_pane_id, client_id),
|
||||||
|
None => self.focus_pane(pane_id, client_id),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn defocus_pane(&mut self, pane_id: PaneId, client_id: ClientId) {
|
pub fn defocus_pane(&mut self, pane_id: PaneId, client_id: ClientId) {
|
||||||
|
|
|
||||||
|
|
@ -588,8 +588,9 @@ impl TiledPanes {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn focus_pane_if_client_not_focused(&mut self, pane_id: PaneId, client_id: ClientId) {
|
pub fn focus_pane_if_client_not_focused(&mut self, pane_id: PaneId, client_id: ClientId) {
|
||||||
if self.active_panes.get(&client_id).is_none() {
|
match self.active_panes.get(&client_id) {
|
||||||
self.focus_pane(pane_id, client_id)
|
Some(already_focused_pane_id) => self.focus_pane(*already_focused_pane_id, client_id),
|
||||||
|
None => self.focus_pane(pane_id, client_id),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn clear_active_panes(&mut self) {
|
pub fn clear_active_panes(&mut self) {
|
||||||
|
|
|
||||||
|
|
@ -1920,13 +1920,14 @@ pub(crate) fn screen_thread_main(
|
||||||
) => {
|
) => {
|
||||||
match client_or_tab_index {
|
match client_or_tab_index {
|
||||||
ClientOrTabIndex::ClientId(client_id) => {
|
ClientOrTabIndex::ClientId(client_id) => {
|
||||||
active_tab_and_connected_client_id!(screen, client_id, |tab: &mut Tab,
|
active_tab_and_connected_client_id!(screen, client_id, |tab: &mut Tab, client_id: ClientId| {
|
||||||
client_id: ClientId| tab .new_pane(pid,
|
tab.new_pane(pid,
|
||||||
initial_pane_title,
|
initial_pane_title,
|
||||||
should_float,
|
should_float,
|
||||||
None,
|
None,
|
||||||
Some(client_id)),
|
Some(client_id)
|
||||||
?);
|
)
|
||||||
|
}, ?);
|
||||||
if let Some(hold_for_command) = hold_for_command {
|
if let Some(hold_for_command) = hold_for_command {
|
||||||
let is_first_run = true;
|
let is_first_run = true;
|
||||||
active_tab_and_connected_client_id!(
|
active_tab_and_connected_client_id!(
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ pub enum CliAction {
|
||||||
requires("command")
|
requires("command")
|
||||||
)]
|
)]
|
||||||
start_suspended: bool,
|
start_suspended: bool,
|
||||||
#[clap(short, long, value_parser)]
|
#[clap(long, value_parser)]
|
||||||
configuration: Option<PluginUserConfiguration>,
|
configuration: Option<PluginUserConfiguration>,
|
||||||
},
|
},
|
||||||
/// Open the specified file in a new zellij pane with your default EDITOR
|
/// Open the specified file in a new zellij pane with your default EDITOR
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue