From 03b34931383e701c39c653a7662a616fe21a0947 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez <hector0193@gmail.com> Date: Thu, 14 Oct 2021 16:07:22 +0700 Subject: Remove trait-specific draw logic in `iced_native` --- glutin/src/application.rs | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'glutin/src') diff --git a/glutin/src/application.rs b/glutin/src/application.rs index fa2192d8..508dfe04 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -1,5 +1,5 @@ //! Create interactive, native cross-platform applications. -use crate::{mouse, Error, Executor, Runtime}; +use crate::{Error, Executor, Runtime}; pub use iced_winit::Application; @@ -179,9 +179,8 @@ 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(); + // TODO + // let mut mouse_interaction = mouse::Interaction::default(); let mut events = Vec::new(); let mut messages = Vec::new(); @@ -246,8 +245,7 @@ async fn run_instance<A, E, C>( } debug.draw_started(); - primitive = - user_interface.draw(&mut renderer, state.cursor_position()); + user_interface.draw(&mut renderer, state.cursor_position()); debug.draw_finished(); context.window().request_redraw(); @@ -291,8 +289,7 @@ async fn run_instance<A, E, C>( debug.layout_finished(); debug.draw_started(); - primitive = user_interface - .draw(&mut renderer, state.cursor_position()); + user_interface.draw(&mut renderer, state.cursor_position()); debug.draw_finished(); context.resize(glutin::dpi::PhysicalSize::new( @@ -305,11 +302,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 +313,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. } -- cgit From be97a5d502df8c8b23704f5a8a0d425f4eff2215 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez <hector0193@gmail.com> Date: Mon, 18 Oct 2021 16:43:18 +0700 Subject: Introduce `mouse_interaction` method to `Widget` trait --- glutin/src/application.rs | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'glutin/src') 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, -- cgit