Add relabel helper to pane_grid::State
This commit is contained in:
parent
55504ffcd4
commit
d08bc6e45d
1 changed files with 15 additions and 14 deletions
|
|
@ -220,12 +220,8 @@ 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));
|
||||
// Ensure new node corresponds to original closed `Pane` for state continuity
|
||||
self.relabel(new_pane, pane);
|
||||
|
||||
if swap {
|
||||
self.swap(target, pane);
|
||||
|
|
@ -258,22 +254,27 @@ impl<T> State<T> {
|
|||
&mut self,
|
||||
axis: Axis,
|
||||
pane: Pane,
|
||||
swap: bool,
|
||||
inverse: bool,
|
||||
) {
|
||||
if let Some((state, _)) = self.close(pane) {
|
||||
if let Some((new_pane, _)) =
|
||||
self.split_node(axis, None, state, swap)
|
||||
self.split_node(axis, None, state, inverse)
|
||||
{
|
||||
// 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));
|
||||
// Ensure new node corresponds to original closed `Pane` for state continuity
|
||||
self.relabel(new_pane, pane);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn relabel(&mut self, target: Pane, label: Pane) {
|
||||
self.swap(target, label);
|
||||
|
||||
let _ = self
|
||||
.panes
|
||||
.remove(&target)
|
||||
.and_then(|state| self.panes.insert(label, state));
|
||||
}
|
||||
|
||||
/// Swaps the position of the provided panes in the [`State`].
|
||||
///
|
||||
/// If you want to swap panes on drag and drop in your [`PaneGrid`], you
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue