diff options
Diffstat (limited to 'native/src/program')
-rw-r--r-- | native/src/program/state.rs | 17 |
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()); |