Make Overlay aware of viewport

... and unify `Image::float` and `Image::translate`
This commit is contained in:
Héctor Ramón Jiménez 2025-04-26 02:51:32 +02:00
parent a2a7c18c9d
commit 6c51a9579d
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
29 changed files with 121 additions and 56 deletions

View file

@ -368,12 +368,13 @@ where
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
viewport: &Rectangle,
translation: Vector,
) -> Option<overlay::Element<'b, B, Theme, Renderer>> {
let mapper = &self.mapper;
self.widget
.overlay(tree, layout, renderer, translation)
.overlay(tree, layout, renderer, viewport, translation)
.map(move |overlay| overlay.map(mapper))
}
}
@ -519,10 +520,15 @@ where
state: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
viewport: &Rectangle,
translation: Vector,
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
self.element
.widget
.overlay(state, layout, renderer, translation)
self.element.widget.overlay(
state,
layout,
renderer,
viewport,
translation,
)
}
}

View file

@ -122,6 +122,7 @@ pub fn from_children<'a, Message, Theme, Renderer>(
tree: &'a mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
viewport: &Rectangle,
translation: Vector,
) -> Option<Element<'a, Message, Theme, Renderer>>
where
@ -132,9 +133,13 @@ where
.zip(&mut tree.children)
.zip(layout.children())
.filter_map(|((child, state), layout)| {
child
.as_widget_mut()
.overlay(state, layout, renderer, translation)
child.as_widget_mut().overlay(
state,
layout,
renderer,
viewport,
translation,
)
})
.collect::<Vec<_>>();

View file

@ -146,6 +146,7 @@ where
_state: &'a mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer,
_viewport: &Rectangle,
_translation: Vector,
) -> Option<overlay::Element<'a, Message, Theme, Renderer>> {
None