fix(panes): do not crash when closing fixed pane (#987)
This commit is contained in:
parent
34634f77f7
commit
0d0064afff
1 changed files with 17 additions and 14 deletions
|
|
@ -1647,27 +1647,30 @@ impl<'a> PaneGrid<'a> {
|
||||||
pub fn fill_space_over_pane(&mut self, id: PaneId) -> bool {
|
pub fn fill_space_over_pane(&mut self, id: PaneId) -> bool {
|
||||||
// true => successfully filled space over pane
|
// true => successfully filled space over pane
|
||||||
// false => didn't succeed, so didn't do anything
|
// false => didn't succeed, so didn't do anything
|
||||||
|
log::info!("fill_space_over_pane");
|
||||||
let (freed_width, freed_height) = {
|
let (freed_width, freed_height) = {
|
||||||
let panes = self.panes.borrow_mut();
|
let panes = self.panes.borrow_mut();
|
||||||
let pane_to_close = panes.get(&id).unwrap();
|
let pane_to_close = panes.get(&id).unwrap();
|
||||||
let freed_space = pane_to_close.position_and_size();
|
let freed_space = pane_to_close.position_and_size();
|
||||||
let freed_width = freed_space.cols.as_percent().unwrap();
|
let freed_width = freed_space.cols.as_percent();
|
||||||
let freed_height = freed_space.rows.as_percent().unwrap();
|
let freed_height = freed_space.rows.as_percent();
|
||||||
(freed_width, freed_height)
|
(freed_width, freed_height)
|
||||||
};
|
};
|
||||||
if let Some((panes_to_grow, direction)) = self.find_panes_to_grow(id) {
|
if let (Some(freed_width), Some(freed_height)) = (freed_width, freed_height) {
|
||||||
self.grow_panes(&panes_to_grow, direction, (freed_width, freed_height));
|
if let Some((panes_to_grow, direction)) = self.find_panes_to_grow(id) {
|
||||||
let side_length = match direction {
|
self.grow_panes(&panes_to_grow, direction, (freed_width, freed_height));
|
||||||
Direction::Vertical => self.display_area.rows,
|
let side_length = match direction {
|
||||||
Direction::Horizontal => self.display_area.cols,
|
Direction::Vertical => self.display_area.rows,
|
||||||
};
|
Direction::Horizontal => self.display_area.cols,
|
||||||
{
|
};
|
||||||
let mut panes = self.panes.borrow_mut();
|
{
|
||||||
(*panes).remove(&id);
|
let mut panes = self.panes.borrow_mut();
|
||||||
|
(*panes).remove(&id);
|
||||||
|
}
|
||||||
|
let mut pane_resizer = PaneResizer::new(self.panes.clone());
|
||||||
|
let _ = pane_resizer.layout(direction, side_length);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
let mut pane_resizer = PaneResizer::new(self.panes.clone());
|
|
||||||
let _ = pane_resizer.layout(direction, side_length);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue