summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-07 12:00:33 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-07 12:00:33 +0100
commitd756a9210acd97eb41191f5199f4d7357f4d253a (patch)
tree312debeef130055bde0638fd2ed4d83d6d20eefe /widget
parentbcdfbf487198b59f4432545288914f139cdcaf9d (diff)
downloadiced-d756a9210acd97eb41191f5199f4d7357f4d253a.tar.gz
iced-d756a9210acd97eb41191f5199f4d7357f4d253a.tar.bz2
iced-d756a9210acd97eb41191f5199f4d7357f4d253a.zip
Override `MouseArea` interaction only when contents are idle
Diffstat (limited to 'widget')
-rw-r--r--widget/src/mouse_area.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs
index a5967077..c9258c40 100644
--- a/widget/src/mouse_area.rs
+++ b/widget/src/mouse_area.rs
@@ -101,7 +101,7 @@ impl<'a, Message, Theme, Renderer> MouseArea<'a, Message, Theme, Renderer> {
self
}
- /// The version of the cursor to use when hovering.
+ /// The [`mouse::Interaction`] to use when hovering the area.
#[must_use]
pub fn mouse_interaction(
mut self,
@@ -226,21 +226,22 @@ where
viewport: &Rectangle,
renderer: &Renderer,
) -> mouse::Interaction {
- if !cursor.is_over(layout.bounds()) {
- return mouse::Interaction::default();
- }
-
- if let Some(interaction) = self.interaction {
- return interaction;
- }
-
- self.content.as_widget().mouse_interaction(
+ let content_interaction = self.content.as_widget().mouse_interaction(
&tree.children[0],
layout,
cursor,
viewport,
renderer,
- )
+ );
+
+ match (self.interaction, content_interaction) {
+ (Some(interaction), mouse::Interaction::Idle)
+ if cursor.is_over(layout.bounds()) =>
+ {
+ interaction
+ }
+ _ => content_interaction,
+ }
}
fn draw(