diff options
author | 2021-10-18 16:43:18 +0700 | |
---|---|---|
committer | 2021-10-18 16:43:18 +0700 | |
commit | be97a5d502df8c8b23704f5a8a0d425f4eff2215 (patch) | |
tree | 187f0477534c5d5c783ef06686e2209bbf4f3b80 /native/src/overlay | |
parent | 7a876c8b2918ae90cedfd82d1881cf6406811eeb (diff) | |
download | iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.gz iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.bz2 iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.zip |
Introduce `mouse_interaction` method to `Widget` trait
Diffstat (limited to '')
-rw-r--r-- | native/src/overlay.rs | 15 | ||||
-rw-r--r-- | native/src/overlay/element.rs | 13 |
2 files changed, 26 insertions, 2 deletions
diff --git a/native/src/overlay.rs b/native/src/overlay.rs index 25b49adf..70e3305b 100644 --- a/native/src/overlay.rs +++ b/native/src/overlay.rs @@ -8,8 +8,9 @@ pub use menu::Menu; use crate::event::{self, Event}; use crate::layout; +use crate::mouse; use crate::renderer; -use crate::{Clipboard, Hasher, Layout, Point, Size}; +use crate::{Clipboard, Hasher, Layout, Point, Rectangle, Size}; /// An interactive component that can be displayed on top of other widgets. pub trait Overlay<Message, Renderer> @@ -74,4 +75,16 @@ where ) -> event::Status { event::Status::Ignored } + + /// Returns the current [`mouse::Interaction`] of the [`Widget`]. + /// + /// By default, it returns [`mouse::Interaction::Idle`]. + fn mouse_interaction( + &self, + _layout: Layout<'_>, + _viewport: &Rectangle, + _cursor_position: Point, + ) -> mouse::Interaction { + mouse::Interaction::Idle + } } diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index bf3fb3f0..988cca09 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -2,8 +2,9 @@ pub use crate::Overlay; use crate::event::{self, Event}; use crate::layout; +use crate::mouse; use crate::renderer; -use crate::{Clipboard, Hasher, Layout, Point, Size, Vector}; +use crate::{Clipboard, Hasher, Layout, Point, Rectangle, Size, Vector}; /// A generic [`Overlay`]. #[allow(missing_debug_implementations)] @@ -68,6 +69,16 @@ where ) } + pub fn mouse_interaction( + &self, + layout: Layout<'_>, + viewport: &Rectangle, + cursor_position: Point, + ) -> mouse::Interaction { + self.overlay + .mouse_interaction(layout, viewport, cursor_position) + } + /// Draws the [`Element`] and its children using the given [`Layout`]. pub fn draw( &self, |