summaryrefslogtreecommitdiffstats
path: root/native/src/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-28 17:01:23 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-28 17:01:23 +0700
commit8b1587421822d9a0e7fa1c2224447da7007dbd30 (patch)
tree5234edce7f3c3fb96afeaf5c3c7301e659babb2e /native/src/widget
parent1ec667920a792dbe96786a44b8b3064cae7eaea2 (diff)
downloadiced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.gz
iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.tar.bz2
iced-8b1587421822d9a0e7fa1c2224447da7007dbd30.zip
Implement `Widget::draw` for `image::Viewer`
Diffstat (limited to 'native/src/widget')
-rw-r--r--native/src/widget/image.rs4
-rw-r--r--native/src/widget/image/viewer.rs18
2 files changed, 17 insertions, 5 deletions
diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs
index b61904f4..b87c0aab 100644
--- a/native/src/widget/image.rs
+++ b/native/src/widget/image.rs
@@ -98,7 +98,7 @@ where
_cursor_position: Point,
_viewport: &Rectangle,
) {
- renderer.draw(self.handle.clone(), layout);
+ renderer.draw(self.handle.clone(), layout.bounds());
}
fn hash_layout(&self, state: &mut Hasher) {
@@ -228,7 +228,7 @@ pub trait Renderer: crate::Renderer {
fn dimensions(&self, handle: &Handle) -> (u32, u32);
// Draws an [`Image`].
- fn draw(&mut self, handle: Handle, layout: Layout<'_>);
+ fn draw(&mut self, handle: Handle, bounds: Rectangle);
}
impl<'a, Message, Renderer> From<Image> for Element<'a, Message, Renderer>
diff --git a/native/src/widget/image/viewer.rs b/native/src/widget/image/viewer.rs
index 63087f5f..3e8430f3 100644
--- a/native/src/widget/image/viewer.rs
+++ b/native/src/widget/image/viewer.rs
@@ -284,9 +284,9 @@ where
fn draw(
&self,
renderer: &mut Renderer,
- style: &renderer::Style,
+ _style: &renderer::Style,
layout: Layout<'_>,
- cursor_position: Point,
+ _cursor_position: Point,
_viewport: &Rectangle,
) {
let bounds = layout.bounds();
@@ -302,7 +302,19 @@ where
image_top_left - self.state.offset(bounds, image_size)
};
- let is_mouse_over = bounds.contains(cursor_position);
+ renderer.with_layer(bounds, |renderer| {
+ renderer.with_translation(translation, |renderer| {
+ image::Renderer::draw(
+ renderer,
+ self.handle.clone(),
+ Rectangle {
+ x: bounds.x,
+ y: bounds.y,
+ ..Rectangle::with_size(image_size)
+ },
+ )
+ });
+ });
}
fn hash_layout(&self, state: &mut Hasher) {