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)]
pub struct Style {
/// The background [`Color`] of the application.
@ -262,16 +262,27 @@ pub struct Style {
pub text_color: Color,
}
/// The default blank style of a [`Theme`].
/// The default blank style of a theme.
pub trait Base {
/// Returns the default base [`Style`] of a [`Theme`].
/// Returns the default base [`Style`] of a theme.
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 {
fn base(&self) -> Style {
default(self)
}
fn palette(&self) -> Option<Palette> {
Some(self.palette())
}
}
/// The default [`Style`] of a built-in [`Theme`].

View file

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