Merge pull request #2752 from iced-rs/fix/image-viewport

Fix `Image` not respecting `viewport` bounds
This commit is contained in:
Héctor 2025-01-26 04:51:52 +01:00 committed by GitHub
commit d034bd73d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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,