summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lazy/src/component.rs7
-rw-r--r--lazy/src/lazy.rs7
-rw-r--r--lazy/src/responsive.rs7
-rw-r--r--native/src/user_interface.rs18
4 files changed, 30 insertions, 9 deletions
diff --git a/lazy/src/component.rs b/lazy/src/component.rs
index 94263274..4c03e2a3 100644
--- a/lazy/src/component.rs
+++ b/lazy/src/component.rs
@@ -563,4 +563,11 @@ where
event_status
}
+
+ fn is_over(&self, layout: Layout<'_>, cursor_position: Point) -> bool {
+ self.with_overlay_maybe(|overlay| {
+ overlay.is_over(layout, cursor_position)
+ })
+ .unwrap_or_default()
+ }
}
diff --git a/lazy/src/lazy.rs b/lazy/src/lazy.rs
index 9795afa4..5e909a49 100644
--- a/lazy/src/lazy.rs
+++ b/lazy/src/lazy.rs
@@ -372,6 +372,13 @@ where
})
.unwrap_or(iced_native::event::Status::Ignored)
}
+
+ fn is_over(&self, layout: Layout<'_>, cursor_position: Point) -> bool {
+ self.with_overlay_maybe(|overlay| {
+ overlay.is_over(layout, cursor_position)
+ })
+ .unwrap_or_default()
+ }
}
impl<'a, Message, Renderer, Dependency, View>
diff --git a/lazy/src/responsive.rs b/lazy/src/responsive.rs
index e399e7b0..93069493 100644
--- a/lazy/src/responsive.rs
+++ b/lazy/src/responsive.rs
@@ -415,4 +415,11 @@ where
})
.unwrap_or(iced_native::event::Status::Ignored)
}
+
+ fn is_over(&self, layout: Layout<'_>, cursor_position: Point) -> bool {
+ self.with_overlay_maybe(|overlay| {
+ overlay.is_over(layout, cursor_position)
+ })
+ .unwrap_or_default()
+ }
}
diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs
index 80dece21..2358bff1 100644
--- a/native/src/user_interface.rs
+++ b/native/src/user_interface.rs
@@ -263,16 +263,16 @@ where
}
}
- let base_cursor = if manual_overlay
+ let base_cursor = manual_overlay
.as_ref()
- .unwrap()
- .is_over(Layout::new(&layout), cursor_position)
- {
- // TODO: Type-safe cursor availability
- Point::new(-1.0, -1.0)
- } else {
- cursor_position
- };
+ .filter(|overlay| {
+ overlay.is_over(Layout::new(&layout), cursor_position)
+ })
+ .map(|_| {
+ // TODO: Type-safe cursor availability
+ Point::new(-1.0, -1.0)
+ })
+ .unwrap_or(cursor_position);
self.overlay = Some(layout);