fix(panes): no-op on unset fullscreen when no clients are connected (#3166)
* fix(panes): no-op on unset fullscreen when no clients are connected * style(fmt): rustfmt
This commit is contained in:
parent
7bd77ccc61
commit
de8ecafcd2
1 changed files with 30 additions and 27 deletions
|
|
@ -1571,35 +1571,38 @@ impl TiledPanes {
|
||||||
if self.fullscreen_is_active {
|
if self.fullscreen_is_active {
|
||||||
let first_client_id = {
|
let first_client_id = {
|
||||||
let connected_clients = self.connected_clients.borrow();
|
let connected_clients = self.connected_clients.borrow();
|
||||||
*connected_clients.iter().next().unwrap()
|
connected_clients.iter().next().copied()
|
||||||
};
|
};
|
||||||
let active_pane_id = self.get_active_pane_id(first_client_id).unwrap();
|
if let Some(active_pane_id) =
|
||||||
let panes_to_hide: Vec<_> = self.panes_to_hide.iter().copied().collect();
|
first_client_id.and_then(|first_client_id| self.get_active_pane_id(first_client_id))
|
||||||
for pane_id in panes_to_hide {
|
{
|
||||||
let pane = self.get_pane_mut(pane_id).unwrap();
|
let panes_to_hide: Vec<_> = self.panes_to_hide.iter().copied().collect();
|
||||||
pane.set_should_render(true);
|
for pane_id in panes_to_hide {
|
||||||
pane.set_should_render_boundaries(true);
|
let pane = self.get_pane_mut(pane_id).unwrap();
|
||||||
|
pane.set_should_render(true);
|
||||||
|
pane.set_should_render_boundaries(true);
|
||||||
|
}
|
||||||
|
let viewport_pane_ids: Vec<_> = self
|
||||||
|
.panes
|
||||||
|
.keys()
|
||||||
|
.copied()
|
||||||
|
.into_iter()
|
||||||
|
.filter(|id| {
|
||||||
|
!is_inside_viewport(&*self.viewport.borrow(), self.get_pane(*id).unwrap())
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
for pid in viewport_pane_ids {
|
||||||
|
let viewport_pane = self.get_pane_mut(pid).unwrap();
|
||||||
|
viewport_pane.reset_size_and_position_override();
|
||||||
|
}
|
||||||
|
self.panes_to_hide.clear();
|
||||||
|
let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
|
||||||
|
active_terminal.reset_size_and_position_override();
|
||||||
|
self.set_force_render();
|
||||||
|
let display_area = *self.display_area.borrow();
|
||||||
|
self.resize(display_area);
|
||||||
|
self.fullscreen_is_active = false;
|
||||||
}
|
}
|
||||||
let viewport_pane_ids: Vec<_> = self
|
|
||||||
.panes
|
|
||||||
.keys()
|
|
||||||
.copied()
|
|
||||||
.into_iter()
|
|
||||||
.filter(|id| {
|
|
||||||
!is_inside_viewport(&*self.viewport.borrow(), self.get_pane(*id).unwrap())
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
for pid in viewport_pane_ids {
|
|
||||||
let viewport_pane = self.get_pane_mut(pid).unwrap();
|
|
||||||
viewport_pane.reset_size_and_position_override();
|
|
||||||
}
|
|
||||||
self.panes_to_hide.clear();
|
|
||||||
let active_terminal = self.get_pane_mut(active_pane_id).unwrap();
|
|
||||||
active_terminal.reset_size_and_position_override();
|
|
||||||
self.set_force_render();
|
|
||||||
let display_area = *self.display_area.borrow();
|
|
||||||
self.resize(display_area);
|
|
||||||
self.fullscreen_is_active = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn toggle_active_pane_fullscreen(&mut self, client_id: ClientId) {
|
pub fn toggle_active_pane_fullscreen(&mut self, client_id: ClientId) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue