diff options
Diffstat (limited to 'glutin/src')
-rw-r--r-- | glutin/src/application.rs | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs index dbc9b580..a222036a 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -2,6 +2,7 @@ use crate::mouse; use crate::{Error, Executor, Runtime}; +pub use iced_winit::application::StyleSheet; pub use iced_winit::Application; use iced_graphics::window; @@ -25,6 +26,7 @@ where A: Application + 'static, E: Executor + 'static, C: window::GLCompositor<Renderer = A::Renderer> + 'static, + <A::Renderer as iced_native::Renderer>::Theme: StyleSheet, { use futures::task; use futures::Future; @@ -203,12 +205,15 @@ async fn run_instance<A, E, C>( A: Application + 'static, E: Executor + 'static, C: window::GLCompositor<Renderer = A::Renderer> + 'static, + <A::Renderer as iced_native::Renderer>::Theme: StyleSheet, { use glutin::event; use iced_winit::futures::stream::StreamExt; let mut state = application::State::new(&application, context.window()); let mut viewport_version = state.viewport_version(); + let mut theme = application.theme(); + let mut user_interface = ManuallyDrop::new(application::build_user_interface( &mut application, @@ -273,6 +278,7 @@ async fn run_instance<A, E, C>( let should_exit = application.should_exit(); + theme = application.theme(); user_interface = ManuallyDrop::new(application::build_user_interface( &mut application, @@ -288,8 +294,11 @@ async fn run_instance<A, E, C>( } debug.draw_started(); - let new_mouse_interaction = - user_interface.draw(&mut renderer, state.cursor_position()); + let new_mouse_interaction = user_interface.draw( + &mut renderer, + &theme, + state.cursor_position(), + ); debug.draw_finished(); if new_mouse_interaction != mouse_interaction { @@ -341,8 +350,11 @@ async fn run_instance<A, E, C>( debug.layout_finished(); debug.draw_started(); - let new_mouse_interaction = user_interface - .draw(&mut renderer, state.cursor_position()); + let new_mouse_interaction = user_interface.draw( + &mut renderer, + &theme, + state.cursor_position(), + ); debug.draw_finished(); if new_mouse_interaction != mouse_interaction { @@ -368,7 +380,7 @@ async fn run_instance<A, E, C>( compositor.present( &mut renderer, state.viewport(), - state.background_color(), + theme.background_color(), &debug.overlay(), ); |