diff options
Diffstat (limited to 'glutin')
| -rw-r--r-- | glutin/src/application.rs | 39 | 
1 files changed, 23 insertions, 16 deletions
| diff --git a/glutin/src/application.rs b/glutin/src/application.rs index fa2192d8..5d10e96a 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -1,5 +1,6 @@  //! Create interactive, native cross-platform applications. -use crate::{mouse, Error, Executor, Runtime}; +use crate::mouse; +use crate::{Error, Executor, Runtime};  pub use iced_winit::Application; @@ -179,10 +180,7 @@ async fn run_instance<A, E, C>(              &mut debug,          )); -    let mut primitive = -        user_interface.draw(&mut renderer, state.cursor_position());      let mut mouse_interaction = mouse::Interaction::default(); -      let mut events = Vec::new();      let mut messages = Vec::new(); @@ -246,10 +244,18 @@ async fn run_instance<A, E, C>(                  }                  debug.draw_started(); -                primitive = +                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( @@ -291,10 +297,20 @@ async fn run_instance<A, E, C>(                      debug.layout_finished();                      debug.draw_started(); -                    primitive = user_interface +                    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, @@ -305,11 +321,10 @@ async fn run_instance<A, E, C>(                      viewport_version = current_viewport_version;                  } -                let new_mouse_interaction = compositor.draw( +                compositor.present(                      &mut renderer,                      state.viewport(),                      state.background_color(), -                    &primitive,                      &debug.overlay(),                  ); @@ -317,14 +332,6 @@ async fn run_instance<A, E, C>(                  debug.render_finished(); -                if new_mouse_interaction != mouse_interaction { -                    context.window().set_cursor_icon( -                        conversion::mouse_interaction(new_mouse_interaction), -                    ); - -                    mouse_interaction = new_mouse_interaction; -                } -                  // TODO: Handle animations!                  // Maybe we can use `ControlFlow::WaitUntil` for this.              } | 
