Report theme changes to debug API

This commit is contained in:
Héctor Ramón Jiménez 2025-03-13 00:42:28 +01:00
parent 42f5a61809
commit 5f15522368
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 28 additions and 3 deletions

View file

@ -252,7 +252,7 @@ impl fmt::Display for Custom {
} }
} }
/// The base style of a [`Theme`]. /// The base style of a theme.
#[derive(Debug, Clone, Copy, PartialEq)] #[derive(Debug, Clone, Copy, PartialEq)]
pub struct Style { pub struct Style {
/// The background [`Color`] of the application. /// The background [`Color`] of the application.
@ -262,16 +262,27 @@ pub struct Style {
pub text_color: Color, pub text_color: Color,
} }
/// The default blank style of a [`Theme`]. /// The default blank style of a theme.
pub trait Base { pub trait Base {
/// Returns the default base [`Style`] of a [`Theme`]. /// Returns the default base [`Style`] of a theme.
fn base(&self) -> Style; fn base(&self) -> Style;
/// Returns the color [`Palette`] of the theme.
///
/// This [`Palette`] may be used by the runtime for
/// debugging purposes; like displaying performance
/// metrics or devtools.
fn palette(&self) -> Option<Palette>;
} }
impl Base for Theme { impl Base for Theme {
fn base(&self) -> Style { fn base(&self) -> Style {
default(self) default(self)
} }
fn palette(&self) -> Option<Palette> {
Some(self.palette())
}
} }
/// The default [`Style`] of a built-in [`Theme`]. /// The default [`Style`] of a built-in [`Theme`].

View file

@ -597,6 +597,14 @@ async fn run_instance<P>(
continue; continue;
} }
debug::theme_changed(|| {
if window_manager.is_empty() {
theme::Base::palette(&program.theme(id))
} else {
None
}
});
let window = window_manager.insert( let window = window_manager.insert(
id, id,
window, window,
@ -1026,6 +1034,12 @@ async fn run_instance<P>(
window.raw.request_redraw(); window.raw.request_redraw();
} }
debug::theme_changed(|| {
window_manager.first().and_then(|window| {
theme::Base::palette(window.state.theme())
})
});
user_interfaces = user_interfaces =
ManuallyDrop::new(build_user_interfaces( ManuallyDrop::new(build_user_interfaces(
&program, &program,