make remove_tab safer
This commit is contained in:
parent
5587b5cb8d
commit
91ed79cb55
@ -98,15 +98,16 @@ impl GUI {
|
||||
}
|
||||
Message::Pane(pane_id, pane::Message::View(pane::ViewMessage::SplitTab(i))) => {
|
||||
if let Some(p) = self.panes.get_mut(pane_id) {
|
||||
let tab = p.remove_tab(i);
|
||||
let result = self.panes.split(
|
||||
pane_grid::Axis::Vertical,
|
||||
pane_id,
|
||||
pane::Pane::new_with_tab(tab.state),
|
||||
);
|
||||
if let Some(tab) = p.remove_tab(i) {
|
||||
let result = self.panes.split(
|
||||
pane_grid::Axis::Vertical,
|
||||
pane_id,
|
||||
pane::Pane::new_with_tab(tab.state),
|
||||
);
|
||||
|
||||
if let Some((pane, _)) = result {
|
||||
self.focus = Some(pane);
|
||||
if let Some((pane, _)) = result {
|
||||
self.focus = Some(pane);
|
||||
}
|
||||
}
|
||||
}
|
||||
Task::none()
|
||||
|
||||
@ -61,11 +61,15 @@ impl Pane {
|
||||
}
|
||||
|
||||
pub fn close_tab(&mut self, i: usize) {
|
||||
let mut tab = self.remove_tab(i);
|
||||
tab.stop();
|
||||
if let Some(mut tab) = self.remove_tab(i) {
|
||||
tab.stop();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_tab(&mut self, i: usize) -> tab::Tab {
|
||||
pub fn remove_tab(&mut self, i: usize) -> Option<tab::Tab> {
|
||||
if i >= self.tabs.len() {
|
||||
return None;
|
||||
}
|
||||
let tab = self.tabs.remove(i);
|
||||
self.focused_tab = if self.tabs.is_empty() {
|
||||
0
|
||||
@ -74,7 +78,7 @@ impl Pane {
|
||||
} else {
|
||||
self.tabs.len() - 1
|
||||
};
|
||||
tab
|
||||
Some(tab)
|
||||
}
|
||||
|
||||
pub fn add_tabs(&mut self, tabs: Vec<tab::Tab>, focused_tab: usize) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user