summaryrefslogtreecommitdiffstats
path: root/winit/src/application.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-14 01:47:55 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-14 01:56:32 +0200
commit664251f3f5c7b76f69a97683af1468094bba887f (patch)
treef43a495036ed117ce5dbb479c62652d872a6d273 /winit/src/application.rs
parent5de337f214530faab1d5fe47784afd7006c3f7f0 (diff)
downloadiced-664251f3f5c7b76f69a97683af1468094bba887f.tar.gz
iced-664251f3f5c7b76f69a97683af1468094bba887f.tar.bz2
iced-664251f3f5c7b76f69a97683af1468094bba887f.zip
Draft first-class `Theme` support
RFC: https://github.com/iced-rs/rfcs/pull/6
Diffstat (limited to 'winit/src/application.rs')
-rw-r--r--winit/src/application.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs
index 90b03d56..abe6b8a9 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -51,6 +51,9 @@ pub trait Application: Program {
/// title of your application when necessary.
fn title(&self) -> String;
+ /// Returns the current [`Theme`] of the [`Application`].
+ fn theme(&self) -> <Self::Renderer as iced_native::Renderer>::Theme;
+
/// Returns the event `Subscription` for the current state of the
/// application.
///
@@ -255,6 +258,7 @@ async fn run_instance<A, E, C>(
let mut state = State::new(&application, &window);
let mut viewport_version = state.viewport_version();
+ let mut theme = application.theme();
let physical_size = state.physical_size();
@@ -327,6 +331,7 @@ async fn run_instance<A, E, C>(
let should_exit = application.should_exit();
+ theme = application.theme();
user_interface = ManuallyDrop::new(build_user_interface(
&mut application,
cache,
@@ -341,8 +346,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 {
@@ -389,8 +397,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(),
+ );
if new_mouse_interaction != mouse_interaction {
window.set_cursor_icon(conversion::mouse_interaction(