summaryrefslogtreecommitdiffstats
path: root/native/src/program/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/program/state.rs')
-rw-r--r--native/src/program/state.rs30
1 files changed, 14 insertions, 16 deletions
diff --git a/native/src/program/state.rs b/native/src/program/state.rs
index 3f5f6069..26c0eb21 100644
--- a/native/src/program/state.rs
+++ b/native/src/program/state.rs
@@ -1,5 +1,6 @@
+use crate::mouse;
use crate::{
- Cache, Clipboard, Command, Debug, Event, Point, Program, Renderer, Size,
+ Cache, Clipboard, Command, Debug, Event, Point, Program, Size,
UserInterface,
};
@@ -12,9 +13,9 @@ where
{
program: P,
cache: Option<Cache>,
- primitive: <P::Renderer as Renderer>::Output,
queued_events: Vec<Event>,
queued_messages: Vec<P::Message>,
+ mouse_interaction: mouse::Interaction,
}
impl<P> State<P>
@@ -26,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,
@@ -38,18 +38,14 @@ where
debug,
);
- debug.draw_started();
- let primitive = user_interface.draw(renderer, cursor_position);
- debug.draw_finished();
-
let cache = Some(user_interface.into_cache());
State {
program,
cache,
- primitive,
queued_events: Vec::new(),
queued_messages: Vec::new(),
+ mouse_interaction: mouse::Interaction::Idle,
}
}
@@ -58,11 +54,6 @@ where
&self.program
}
- /// Returns a reference to the current rendering primitive of the [`State`].
- pub fn primitive(&self) -> &<P::Renderer as Renderer>::Output {
- &self.primitive
- }
-
/// Queues an event in the [`State`] for processing during an [`update`].
///
/// [`update`]: Self::update
@@ -82,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.
///
@@ -120,7 +116,8 @@ where
if messages.is_empty() {
debug.draw_started();
- self.primitive = 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());
@@ -151,7 +148,8 @@ where
);
debug.draw_started();
- self.primitive = 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());