summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-01-26 04:27:15 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-01-26 04:32:04 +0100
commitd886f395213691a8ba1b2aa11d7806666738f1f1 (patch)
tree3cd24d959f1d8122242fd1d4ac70b6d94b561bf8 /widget
parent3428a3d2afb766c264453a58e15d33953d438238 (diff)
downloadiced-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.rs8
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,