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:
Cory Forsstrom 2024-10-04 11:34:14 -07:00 committed by Héctor Ramón Jiménez
parent 9ac3318357
commit 5ebd8ac83f
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -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));
}
}
}