Take pane state internally

This commit is contained in:
Joao Freitas 2023-05-19 12:12:08 +01:00
parent 0cb84c1c4c
commit bc590e2d6f
No known key found for this signature in database
GPG key ID: 4FAF61C62BC37389
2 changed files with 9 additions and 22 deletions

View file

@ -110,10 +110,7 @@ impl Application for Example {
target, target,
region, region,
}) => { }) => {
if let Some(state) = self.panes.get(&pane) { self.panes.split_with(&target, &pane, region);
let pane = (*state, &pane);
self.panes.split_with(&target, pane, region);
}
} }
Message::Dragged(_) => {} Message::Dragged(_) => {}
Message::TogglePin(pane) => { Message::TogglePin(pane) => {

View file

@ -170,17 +170,9 @@ impl<T> State<T> {
/// Split a target [`Pane`] with a given [`Pane`] on a given [`Region`]. /// Split a target [`Pane`] with a given [`Pane`] on a given [`Region`].
/// ///
/// Panes will be swapped by default for [`Region::Center`]. /// Panes will be swapped by default for [`Region::Center`].
pub fn split_with( pub fn split_with(&mut self, target: &Pane, pane: &Pane, region: Region) {
&mut self,
target: &Pane,
pane: (T, &Pane),
region: Region,
) {
match region { match region {
Region::Center => { Region::Center => self.swap(pane, target),
let (_, pane) = pane;
self.swap(pane, target);
}
Region::Top => { Region::Top => {
self.split_and_swap(Axis::Horizontal, target, pane, true) self.split_and_swap(Axis::Horizontal, target, pane, true)
} }
@ -200,17 +192,15 @@ impl<T> State<T> {
&mut self, &mut self,
axis: Axis, axis: Axis,
target: &Pane, target: &Pane,
pane: (T, &Pane), pane: &Pane,
invert: bool, invert: bool,
) { ) {
let (state, pane) = 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) { if invert {
if invert { self.swap(target, &new_pane);
self.swap(target, &new_pane); }
} }
let _ = self.close(pane);
} }
} }