wip rebase updates

This commit is contained in:
Ashley Wulber 2026-02-10 15:37:41 -05:00
parent 86dcf8af6c
commit e10459fb37
68 changed files with 1776 additions and 1544 deletions

View file

@ -15,7 +15,7 @@ use taffy::{AlignContent, TaffyTree};
pub fn resolve<Message>(
renderer: &Renderer,
limits: &Limits,
items: &[Element<'_, Message>],
items: &mut [Element<'_, Message>],
padding: Padding,
column_spacing: f32,
row_spacing: f32,
@ -61,8 +61,8 @@ pub fn resolve<Message>(
..taffy::Style::default()
};
for (child, tree) in items.iter().zip(tree.iter_mut()) {
let child_widget = child.as_widget();
for (child, tree) in items.iter_mut().zip(tree.iter_mut()) {
let child_widget = child.as_widget_mut();
let child_node = child_widget.layout(tree, renderer, limits);
let size = child_node.size();
@ -138,7 +138,7 @@ pub fn resolve<Message>(
leafs
.into_iter()
.zip(items.iter())
.zip(items.iter_mut())
.zip(nodes.iter_mut())
.zip(tree)
.for_each(|(((leaf, child), node), tree)| {
@ -146,7 +146,7 @@ pub fn resolve<Message>(
return;
};
let child_widget = child.as_widget();
let child_widget = child.as_widget_mut();
let c_size = child_widget.size();
match c_size.width {
Length::Fill | Length::FillPortion(_) => {

View file

@ -100,7 +100,7 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
}
fn layout(
&self,
&mut self,
tree: &mut Tree,
renderer: &Renderer,
limits: &layout::Limits,
@ -114,7 +114,7 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
super::layout::resolve(
renderer,
&limits,
&self.children,
&mut self.children,
self.padding,
f32::from(self.column_spacing),
f32::from(self.row_spacing),
@ -127,19 +127,19 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
}
fn operate(
&self,
&mut self,
tree: &mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
operation: &mut dyn Operation<()>,
) {
operation.container(None, layout.bounds(), &mut |operation| {
operation.traverse(&mut |operation| {
self.children
.iter()
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
.for_each(|((child, state), c_layout)| {
child.as_widget().operate(
child.as_widget_mut().operate(
state,
c_layout.with_virtual_offset(layout.virtual_offset()),
renderer,
@ -149,25 +149,25 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
});
}
fn on_event(
fn update(
&mut self,
tree: &mut Tree,
event: Event,
event: &Event,
layout: Layout<'_>,
cursor: mouse::Cursor,
renderer: &Renderer,
clipboard: &mut dyn Clipboard,
shell: &mut Shell<'_, Message>,
viewport: &Rectangle,
) -> event::Status {
) {
self.children
.iter_mut()
.zip(&mut tree.children)
.zip(layout.children())
.map(|((child, state), c_layout)| {
child.as_widget_mut().on_event(
child.as_widget_mut().update(
state,
event.clone(),
event,
c_layout.with_virtual_offset(layout.virtual_offset()),
cursor,
renderer,
@ -175,8 +175,7 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
shell,
viewport,
)
})
.fold(event::Status::Ignored, event::Status::merge)
});
}
fn mouse_interaction(
@ -235,11 +234,19 @@ impl<Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for FlexR
fn overlay<'b>(
&'b mut self,
tree: &'b mut Tree,
layout: Layout<'_>,
layout: Layout<'b>,
renderer: &Renderer,
viewport: &Rectangle,
translation: Vector,
) -> Option<overlay::Element<'b, Message, crate::Theme, Renderer>> {
overlay::from_children(&mut self.children, tree, layout, renderer, translation)
overlay::from_children(
&mut self.children,
tree,
layout,
renderer,
viewport,
translation,
)
}
#[cfg(feature = "a11y")]