From d862ff66acdfc5c9f9df4007301c07acdaca91d1 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 6 May 2021 22:10:05 +0200 Subject: [PATCH] Add Image::sense to let an image respond to clicks and drags --- egui/src/widgets/image.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/egui/src/widgets/image.rs b/egui/src/widgets/image.rs index 5d500006..0fe3529d 100644 --- a/egui/src/widgets/image.rs +++ b/egui/src/widgets/image.rs @@ -20,6 +20,7 @@ pub struct Image { size: Vec2, bg_fill: Color32, tint: Color32, + sense: Sense, } impl Image { @@ -30,6 +31,7 @@ impl Image { size: size.into(), bg_fill: Default::default(), tint: Color32::WHITE, + sense: Sense::hover(), } } @@ -50,6 +52,14 @@ impl Image { self.tint = tint.into(); self } + + /// Make the image respond to clicks and/or drags. + /// + /// Consider using [`ImageButton`] instead, for an on-hover effect. + pub fn sense(mut self, sense: Sense) -> Self { + self.sense = sense; + self + } } impl Image { @@ -65,6 +75,7 @@ impl Image { size: _, bg_fill, tint, + sense: _, } = self; if *bg_fill != Default::default() { @@ -84,7 +95,7 @@ impl Image { impl Widget for Image { fn ui(self, ui: &mut Ui) -> Response { - let (rect, response) = ui.allocate_exact_size(self.size, Sense::hover()); + let (rect, response) = ui.allocate_exact_size(self.size, self.sense); self.paint_at(ui, rect); response }