summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--native/src/widget/image.rs23
1 files changed, 14 insertions, 9 deletions
diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs
index d83230f2..a2e7f765 100644
--- a/native/src/widget/image.rs
+++ b/native/src/widget/image.rs
@@ -6,7 +6,8 @@ use crate::image;
use crate::layout;
use crate::renderer;
use crate::{
- ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
+ ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size,
+ Vector, Widget,
};
use std::hash::Hash;
@@ -128,14 +129,18 @@ where
let bounds = layout.bounds();
let render = |renderer: &mut Renderer| {
- renderer.draw(
- self.handle.clone(),
- Rectangle {
- width: adjusted_fit.width,
- height: adjusted_fit.height,
- ..layout.bounds()
- },
- )
+ let offset = Vector::new(
+ (bounds.width - adjusted_fit.width).max(0.0) / 2.0,
+ (bounds.height - adjusted_fit.height).max(0.0) / 2.0,
+ );
+
+ let bounds = Rectangle {
+ width: adjusted_fit.width,
+ height: adjusted_fit.height,
+ ..layout.bounds()
+ };
+
+ renderer.draw(self.handle.clone(), bounds + offset)
};
if adjusted_fit.width > bounds.width