Rename state::Widget to pane_grid::Memory

This commit is contained in:
Héctor Ramón Jiménez 2024-10-24 13:55:04 +02:00
parent 089e629f41
commit 55504ffcd4
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 15 additions and 16 deletions

View file

@ -295,6 +295,12 @@ where
} }
} }
#[derive(Default)]
struct Memory {
action: state::Action,
order: Vec<Pane>,
}
impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer>
for PaneGrid<'a, Message, Theme, Renderer> for PaneGrid<'a, Message, Theme, Renderer>
where where
@ -302,11 +308,11 @@ where
Renderer: core::Renderer, Renderer: core::Renderer,
{ {
fn tag(&self) -> tree::Tag { fn tag(&self) -> tree::Tag {
tree::Tag::of::<state::Widget>() tree::Tag::of::<Memory>()
} }
fn state(&self) -> tree::State { fn state(&self) -> tree::State {
tree::State::new(state::Widget::default()) tree::State::new(Memory::default())
} }
fn children(&self) -> Vec<Tree> { fn children(&self) -> Vec<Tree> {
@ -314,7 +320,7 @@ where
} }
fn diff(&self, tree: &mut Tree) { fn diff(&self, tree: &mut Tree) {
let state::Widget { panes, .. } = tree.state.downcast_ref(); let Memory { order, .. } = tree.state.downcast_ref();
// `Pane` always increments and is iterated by Ord so new // `Pane` always increments and is iterated by Ord so new
// states are always added at the end. We can simply remove // states are always added at the end. We can simply remove
@ -325,7 +331,7 @@ where
let mut i = 0; let mut i = 0;
let mut j = 0; let mut j = 0;
tree.children.retain(|_| { tree.children.retain(|_| {
let retain = self.panes.get(i) == panes.get(j); let retain = self.panes.get(i) == order.get(j);
if retain { if retain {
i += 1; i += 1;
@ -341,8 +347,8 @@ where
Content::state, Content::state,
); );
let state::Widget { panes, .. } = tree.state.downcast_mut(); let Memory { order, .. } = tree.state.downcast_mut();
panes.clone_from(&self.panes); order.clone_from(&self.panes);
} }
fn size(&self) -> Size<Length> { fn size(&self) -> Size<Length> {
@ -430,7 +436,7 @@ where
) -> event::Status { ) -> event::Status {
let mut event_status = event::Status::Ignored; let mut event_status = event::Status::Ignored;
let state::Widget { action, .. } = tree.state.downcast_mut(); let Memory { action, .. } = tree.state.downcast_mut();
let node = self.internal.layout(); let node = self.internal.layout();
let on_drag = if self.drag_enabled() { let on_drag = if self.drag_enabled() {
@ -642,7 +648,7 @@ where
viewport: &Rectangle, viewport: &Rectangle,
renderer: &Renderer, renderer: &Renderer,
) -> mouse::Interaction { ) -> mouse::Interaction {
let state::Widget { action, .. } = tree.state.downcast_ref(); let Memory { action, .. } = tree.state.downcast_ref();
if action.picked_pane().is_some() { if action.picked_pane().is_some() {
return mouse::Interaction::Grabbing; return mouse::Interaction::Grabbing;
@ -716,8 +722,7 @@ where
cursor: mouse::Cursor, cursor: mouse::Cursor,
viewport: &Rectangle, viewport: &Rectangle,
) { ) {
let state::Widget { action, .. } = let Memory { action, .. } = tree.state.downcast_ref();
tree.state.downcast_ref::<state::Widget>();
let node = self.internal.layout(); let node = self.internal.layout();
let resize_leeway = self.on_resize.as_ref().map(|(leeway, _)| *leeway); let resize_leeway = self.on_resize.as_ref().map(|(leeway, _)| *leeway);

View file

@ -465,9 +465,3 @@ impl Action {
} }
} }
} }
#[derive(Default)]
pub(super) struct Widget {
pub action: Action,
pub panes: Vec<Pane>,
}