Keep Pane associated to state / layout after swap
State continuity is dependent on keeping a node associated to it's original `Pane` id. When splitting -> swapping nodes, we need to assign it back to the original `Pane` to enforce continuity.
This commit is contained in:
parent
9ac3318357
commit
5ebd8ac83f
1 changed files with 18 additions and 2 deletions
|
|
@ -228,8 +228,15 @@ impl<T> State<T> {
|
||||||
) {
|
) {
|
||||||
if let Some((state, _)) = self.close(pane) {
|
if let Some((state, _)) = self.close(pane) {
|
||||||
if let Some((new_pane, _)) = self.split(axis, target, state) {
|
if let Some((new_pane, _)) = self.split(axis, target, state) {
|
||||||
|
// Ensure new node corresponds to original `Pane` for state continuity
|
||||||
|
self.swap(pane, new_pane);
|
||||||
|
let _ = self
|
||||||
|
.panes
|
||||||
|
.remove(&new_pane)
|
||||||
|
.and_then(|state| self.panes.insert(pane, state));
|
||||||
|
|
||||||
if swap {
|
if swap {
|
||||||
self.swap(target, new_pane);
|
self.swap(target, pane);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -262,7 +269,16 @@ impl<T> State<T> {
|
||||||
swap: bool,
|
swap: bool,
|
||||||
) {
|
) {
|
||||||
if let Some((state, _)) = self.close(pane) {
|
if let Some((state, _)) = self.close(pane) {
|
||||||
let _ = self.split_node(axis, None, state, swap);
|
if let Some((new_pane, _)) =
|
||||||
|
self.split_node(axis, None, state, swap)
|
||||||
|
{
|
||||||
|
// Ensure new node corresponds to original `Pane` for state continuity
|
||||||
|
self.swap(pane, new_pane);
|
||||||
|
let _ = self
|
||||||
|
.panes
|
||||||
|
.remove(&new_pane)
|
||||||
|
.and_then(|state| self.panes.insert(pane, state));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue