Report theme changes to debug API
This commit is contained in:
parent
42f5a61809
commit
5f15522368
2 changed files with 28 additions and 3 deletions
|
|
@ -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`].
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue