summaryrefslogtreecommitdiffstats
path: root/glutin
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 /glutin
parent7a876c8b2918ae90cedfd82d1881cf6406811eeb (diff)
downloadiced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.gz
iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.bz2
iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.zip
Introduce `mouse_interaction` method to `Widget` trait
Diffstat (limited to 'glutin')
-rw-r--r--glutin/src/application.rs29
1 files changed, 24 insertions, 5 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs
index 508dfe04..5d10e96a 100644
--- a/glutin/src/application.rs
+++ b/glutin/src/application.rs
@@ -1,4 +1,5 @@
//! Create interactive, native cross-platform applications.
+use crate::mouse;
use crate::{Error, Executor, Runtime};
pub use iced_winit::Application;
@@ -179,9 +180,7 @@ async fn run_instance<A, E, C>(
&mut debug,
));
- // TODO
- // let mut mouse_interaction = mouse::Interaction::default();
-
+ let mut mouse_interaction = mouse::Interaction::default();
let mut events = Vec::new();
let mut messages = Vec::new();
@@ -245,9 +244,18 @@ async fn run_instance<A, E, C>(
}
debug.draw_started();
- user_interface.draw(&mut renderer, state.cursor_position());
+ let new_mouse_interaction =
+ user_interface.draw(&mut renderer, state.cursor_position());
debug.draw_finished();
+ if new_mouse_interaction != mouse_interaction {
+ context.window().set_cursor_icon(
+ conversion::mouse_interaction(new_mouse_interaction),
+ );
+
+ mouse_interaction = new_mouse_interaction;
+ }
+
context.window().request_redraw();
}
event::Event::PlatformSpecific(event::PlatformSpecific::MacOS(
@@ -289,9 +297,20 @@ async fn run_instance<A, E, C>(
debug.layout_finished();
debug.draw_started();
- user_interface.draw(&mut renderer, state.cursor_position());
+ let new_mouse_interaction = user_interface
+ .draw(&mut renderer, state.cursor_position());
debug.draw_finished();
+ if new_mouse_interaction != mouse_interaction {
+ context.window().set_cursor_icon(
+ conversion::mouse_interaction(
+ new_mouse_interaction,
+ ),
+ );
+
+ mouse_interaction = new_mouse_interaction;
+ }
+
context.resize(glutin::dpi::PhysicalSize::new(
physical_size.width,
physical_size.height,