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))) => {
|
Message::Pane(pane_id, pane::Message::View(pane::ViewMessage::SplitTab(i))) => {
|
||||||
if let Some(p) = self.panes.get_mut(pane_id) {
|
if let Some(p) = self.panes.get_mut(pane_id) {
|
||||||
let tab = p.remove_tab(i);
|
if let Some(tab) = p.remove_tab(i) {
|
||||||
let result = self.panes.split(
|
let result = self.panes.split(
|
||||||
pane_grid::Axis::Vertical,
|
pane_grid::Axis::Vertical,
|
||||||
pane_id,
|
pane_id,
|
||||||
pane::Pane::new_with_tab(tab.state),
|
pane::Pane::new_with_tab(tab.state),
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some((pane, _)) = result {
|
if let Some((pane, _)) = result {
|
||||||
self.focus = Some(pane);
|
self.focus = Some(pane);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Task::none()
|
Task::none()
|
||||||
|
|||||||
@ -61,11 +61,15 @@ impl Pane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn close_tab(&mut self, i: usize) {
|
pub fn close_tab(&mut self, i: usize) {
|
||||||
let mut tab = self.remove_tab(i);
|
if let Some(mut tab) = self.remove_tab(i) {
|
||||||
tab.stop();
|
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);
|
let tab = self.tabs.remove(i);
|
||||||
self.focused_tab = if self.tabs.is_empty() {
|
self.focused_tab = if self.tabs.is_empty() {
|
||||||
0
|
0
|
||||||
@ -74,7 +78,7 @@ impl Pane {
|
|||||||
} else {
|
} else {
|
||||||
self.tabs.len() - 1
|
self.tabs.len() - 1
|
||||||
};
|
};
|
||||||
tab
|
Some(tab)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_tabs(&mut self, tabs: Vec<tab::Tab>, focused_tab: usize) {
|
pub fn add_tabs(&mut self, tabs: Vec<tab::Tab>, focused_tab: usize) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user