From 1f60ca3ab4287b5f9bf605fcb7b3cdcf20e17074 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 10 Oct 2019 05:58:42 +0200 Subject: Update mouse cursor icon properly in `iced_winit` --- winit/src/application.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/winit/src/application.rs b/winit/src/application.rs index ab6a43f5..ac3a4619 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -1,6 +1,6 @@ use crate::{ column, conversion, input::mouse, renderer::Windowed, Cache, Column, - Element, Event, Length, UserInterface, + Element, Event, Length, MouseCursor, UserInterface, }; pub trait Application { @@ -44,6 +44,7 @@ pub trait Application { let mut primitive = user_interface.draw(&mut renderer); let mut cache = Some(user_interface.into_cache()); let mut events = Vec::new(); + let mut mouse_cursor = MouseCursor::OutOfBounds; window.request_redraw(); @@ -91,7 +92,15 @@ pub trait Application { window.request_redraw(); } event::Event::RedrawRequested(_) => { - renderer.draw(&mut target, &primitive); + let new_mouse_cursor = renderer.draw(&mut target, &primitive); + + if new_mouse_cursor != mouse_cursor { + window.set_cursor_icon(conversion::mouse_cursor( + new_mouse_cursor, + )); + + mouse_cursor = new_mouse_cursor; + } // TODO: Handle animations! // Maybe we can use `ControlFlow::WaitUntil` for this. -- cgit