summaryrefslogtreecommitdiffstats
path: root/native/src/program
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-18 16:43:18 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-18 16:43:18 +0700
commitbe97a5d502df8c8b23704f5a8a0d425f4eff2215 (patch)
tree187f0477534c5d5c783ef06686e2209bbf4f3b80 /native/src/program
parent7a876c8b2918ae90cedfd82d1881cf6406811eeb (diff)
downloadiced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.gz
iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.bz2
iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.zip
Introduce `mouse_interaction` method to `Widget` trait
Diffstat (limited to 'native/src/program')
-rw-r--r--native/src/program/state.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/native/src/program/state.rs b/native/src/program/state.rs
index 55308a92..26c0eb21 100644
--- a/native/src/program/state.rs
+++ b/native/src/program/state.rs
@@ -1,3 +1,4 @@
+use crate::mouse;
use crate::{
Cache, Clipboard, Command, Debug, Event, Point, Program, Size,
UserInterface,
@@ -14,6 +15,7 @@ where
cache: Option<Cache>,
queued_events: Vec<Event>,
queued_messages: Vec<P::Message>,
+ mouse_interaction: mouse::Interaction,
}
impl<P> State<P>
@@ -25,11 +27,10 @@ where
pub fn new(
mut program: P,
bounds: Size,
- cursor_position: Point,
renderer: &mut P::Renderer,
debug: &mut Debug,
) -> Self {
- let mut user_interface = build_user_interface(
+ let user_interface = build_user_interface(
&mut program,
Cache::default(),
renderer,
@@ -44,6 +45,7 @@ where
cache,
queued_events: Vec::new(),
queued_messages: Vec::new(),
+ mouse_interaction: mouse::Interaction::Idle,
}
}
@@ -71,6 +73,11 @@ where
self.queued_events.is_empty() && self.queued_messages.is_empty()
}
+ /// Returns the current [`mouse::Interaction`] of the [`State`].
+ pub fn mouse_interaction(&self) -> mouse::Interaction {
+ self.mouse_interaction
+ }
+
/// Processes all the queued events and messages, rebuilding and redrawing
/// the widgets of the linked [`Program`] if necessary.
///
@@ -109,7 +116,8 @@ where
if messages.is_empty() {
debug.draw_started();
- user_interface.draw(renderer, cursor_position);
+ self.mouse_interaction =
+ user_interface.draw(renderer, cursor_position);
debug.draw_finished();
self.cache = Some(user_interface.into_cache());
@@ -140,7 +148,8 @@ where
);
debug.draw_started();
- user_interface.draw(renderer, cursor_position);
+ self.mouse_interaction =
+ user_interface.draw(renderer, cursor_position);
debug.draw_finished();
self.cache = Some(user_interface.into_cache());