diff options
author | 2025-01-26 04:27:15 +0100 | |
---|---|---|
committer | 2025-01-26 04:32:04 +0100 | |
commit | d886f395213691a8ba1b2aa11d7806666738f1f1 (patch) | |
tree | 3cd24d959f1d8122242fd1d4ac70b6d94b561bf8 /widget | |
parent | 3428a3d2afb766c264453a58e15d33953d438238 (diff) | |
download | iced-d886f395213691a8ba1b2aa11d7806666738f1f1.tar.gz iced-d886f395213691a8ba1b2aa11d7806666738f1f1.tar.bz2 iced-d886f395213691a8ba1b2aa11d7806666738f1f1.zip |
Fix `Image` not respecting `viewport` bounds
Diffstat (limited to 'widget')
-rw-r--r-- | widget/src/image.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/widget/src/image.rs b/widget/src/image.rs index c8f2a620..f5a9c7f3 100644 --- a/widget/src/image.rs +++ b/widget/src/image.rs @@ -167,6 +167,7 @@ where pub fn draw<Renderer, Handle>( renderer: &mut Renderer, layout: Layout<'_>, + viewport: &Rectangle, handle: &Handle, content_fit: ContentFit, filter_method: FilterMethod, @@ -218,7 +219,9 @@ pub fn draw<Renderer, Handle>( 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 { render(renderer); } @@ -262,11 +265,12 @@ where _style: &renderer::Style, layout: Layout<'_>, _cursor: mouse::Cursor, - _viewport: &Rectangle, + viewport: &Rectangle, ) { draw( renderer, layout, + viewport, &self.handle, self.content_fit, self.filter_method, |