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((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 {
|
||||
self.swap(target, new_pane);
|
||||
self.swap(target, pane);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -262,7 +269,16 @@ impl<T> State<T> {
|
|||
swap: bool,
|
||||
) {
|
||||
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