diff options
author | 2021-10-18 16:43:18 +0700 | |
---|---|---|
committer | 2021-10-18 16:43:18 +0700 | |
commit | be97a5d502df8c8b23704f5a8a0d425f4eff2215 (patch) | |
tree | 187f0477534c5d5c783ef06686e2209bbf4f3b80 /winit | |
parent | 7a876c8b2918ae90cedfd82d1881cf6406811eeb (diff) | |
download | iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.gz iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.tar.bz2 iced-be97a5d502df8c8b23704f5a8a0d425f4eff2215.zip |
Introduce `mouse_interaction` method to `Widget` trait
Diffstat (limited to 'winit')
-rw-r--r-- | winit/src/application.rs | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index 70562627..9d787933 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -5,6 +5,7 @@ pub use state::State; use crate::clipboard::{self, Clipboard}; use crate::conversion; +use crate::mouse; use crate::{ Color, Command, Debug, Error, Executor, Mode, Proxy, Runtime, Settings, Size, Subscription, @@ -252,9 +253,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(); @@ -317,9 +316,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 { + window.set_cursor_icon(conversion::mouse_interaction( + new_mouse_interaction, + )); + + mouse_interaction = new_mouse_interaction; + } + window.request_redraw(); } event::Event::PlatformSpecific(event::PlatformSpecific::MacOS( @@ -356,7 +364,16 @@ 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()); + + if new_mouse_interaction != mouse_interaction { + window.set_cursor_icon(conversion::mouse_interaction( + new_mouse_interaction, + )); + + mouse_interaction = new_mouse_interaction; + } debug.draw_finished(); compositor.configure_surface( |