Decouple cursor_position from Cache
Instead, we ask explicitly for it in the different `update` and `draw` methods. This way, the runtime can derive the logical position of the cursor from the source of truth.
This commit is contained in:
parent
bbdf558bd7
commit
f30a666dc8
6 changed files with 90 additions and 36 deletions
|
|
@ -1,5 +1,5 @@
|
|||
use crate::{
|
||||
Cache, Clipboard, Command, Debug, Event, Program, Renderer, Size,
|
||||
Cache, Clipboard, Command, Debug, Event, Point, Program, Renderer, Size,
|
||||
UserInterface,
|
||||
};
|
||||
|
||||
|
|
@ -31,6 +31,7 @@ where
|
|||
pub fn new(
|
||||
mut program: P,
|
||||
bounds: Size,
|
||||
cursor_position: Point,
|
||||
renderer: &mut P::Renderer,
|
||||
debug: &mut Debug,
|
||||
) -> Self {
|
||||
|
|
@ -43,7 +44,7 @@ where
|
|||
);
|
||||
|
||||
debug.draw_started();
|
||||
let primitive = user_interface.draw(renderer);
|
||||
let primitive = user_interface.draw(renderer, cursor_position);
|
||||
debug.draw_finished();
|
||||
|
||||
let cache = Some(user_interface.into_cache());
|
||||
|
|
@ -104,8 +105,9 @@ where
|
|||
/// [`Program`]: trait.Program.html
|
||||
pub fn update(
|
||||
&mut self,
|
||||
clipboard: Option<&dyn Clipboard>,
|
||||
bounds: Size,
|
||||
cursor_position: Point,
|
||||
clipboard: Option<&dyn Clipboard>,
|
||||
renderer: &mut P::Renderer,
|
||||
debug: &mut Debug,
|
||||
) -> Option<Command<P::Message>> {
|
||||
|
|
@ -120,6 +122,7 @@ where
|
|||
debug.event_processing_started();
|
||||
let mut messages = user_interface.update(
|
||||
self.queued_events.drain(..),
|
||||
cursor_position,
|
||||
clipboard,
|
||||
renderer,
|
||||
);
|
||||
|
|
@ -128,7 +131,7 @@ where
|
|||
|
||||
if messages.is_empty() {
|
||||
debug.draw_started();
|
||||
self.primitive = user_interface.draw(renderer);
|
||||
self.primitive = user_interface.draw(renderer, cursor_position);
|
||||
debug.draw_finished();
|
||||
|
||||
self.cache = Some(user_interface.into_cache());
|
||||
|
|
@ -159,7 +162,7 @@ where
|
|||
);
|
||||
|
||||
debug.draw_started();
|
||||
self.primitive = user_interface.draw(renderer);
|
||||
self.primitive = user_interface.draw(renderer, cursor_position);
|
||||
debug.draw_finished();
|
||||
|
||||
self.cache = Some(user_interface.into_cache());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue