Fix Image not respecting viewport bounds

This commit is contained in:
Héctor Ramón Jiménez 2025-01-26 04:27:15 +01:00
parent 3428a3d2af
commit d886f39521
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -167,6 +167,7 @@ where
pub fn draw<Renderer, Handle>( pub fn draw<Renderer, Handle>(
renderer: &mut Renderer, renderer: &mut Renderer,
layout: Layout<'_>, layout: Layout<'_>,
viewport: &Rectangle,
handle: &Handle, handle: &Handle,
content_fit: ContentFit, content_fit: ContentFit,
filter_method: FilterMethod, filter_method: FilterMethod,
@ -218,7 +219,9 @@ pub fn draw<Renderer, Handle>(
if adjusted_fit.width > bounds.width || adjusted_fit.height > bounds.height if adjusted_fit.width > bounds.width || adjusted_fit.height > bounds.height
{ {
renderer.with_layer(bounds, render); if let Some(bounds) = bounds.intersection(viewport) {
renderer.with_layer(bounds, render);
}
} else { } else {
render(renderer); render(renderer);
} }
@ -262,11 +265,12 @@ where
_style: &renderer::Style, _style: &renderer::Style,
layout: Layout<'_>, layout: Layout<'_>,
_cursor: mouse::Cursor, _cursor: mouse::Cursor,
_viewport: &Rectangle, viewport: &Rectangle,
) { ) {
draw( draw(
renderer, renderer,
layout, layout,
viewport,
&self.handle, &self.handle,
self.content_fit, self.content_fit,
self.filter_method, self.filter_method,