Add Window::set_theme (#2553)
* Add `Window::set_theme` * typo * fix linux build * fix wayland * review changes * update docs * update changelog * pin `image` dep * suppport falling back to system default * fix linux * default to dark on macOS and x11 * fix `setAppearance` definition * add macOS notes * update docs * Update CHANGELOG.md Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com> * update doc * Revert "pin `image` dep" This reverts commit 7517f7c5065b4089ca146ce8799dab445ec32068. * Update theme example with Window::set_theme * Fix Window::theme getter on macOS Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com> Co-authored-by: Mads Marquart <mads@marquart.dk>
This commit is contained in:
parent
9ae7498a8a
commit
28e34c2e1b
15 changed files with 127 additions and 65 deletions
|
|
@ -439,11 +439,6 @@ impl Window {
|
|||
self.decorated.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn set_csd_theme(&self, theme: Theme) {
|
||||
self.send_request(WindowRequest::CsdThemeVariant(theme));
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn set_minimized(&self, minimized: bool) {
|
||||
// You can't unminimize the window on Wayland.
|
||||
|
|
@ -620,6 +615,11 @@ impl Window {
|
|||
self.event_loop_awakener.ping();
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn set_theme(&self, theme: Option<Theme>) {
|
||||
self.send_request(WindowRequest::Theme(theme));
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn theme(&self) -> Option<Theme> {
|
||||
None
|
||||
|
|
|
|||
|
|
@ -59,9 +59,6 @@ pub enum WindowRequest {
|
|||
/// Request decorations change.
|
||||
Decorate(bool),
|
||||
|
||||
/// Request decorations change.
|
||||
CsdThemeVariant(Theme),
|
||||
|
||||
/// Make the window resizeable.
|
||||
Resizeable(bool),
|
||||
|
||||
|
|
@ -96,6 +93,9 @@ pub enum WindowRequest {
|
|||
|
||||
/// Window should be closed.
|
||||
Close,
|
||||
|
||||
/// Change window theme.
|
||||
Theme(Option<Theme>),
|
||||
}
|
||||
|
||||
// The window update comming from the compositor.
|
||||
|
|
@ -464,15 +464,6 @@ pub fn handle_window_requests(winit_state: &mut WinitState) {
|
|||
let window_request = window_user_requests.get_mut(window_id).unwrap();
|
||||
window_request.refresh_frame = true;
|
||||
}
|
||||
#[cfg(feature = "sctk-adwaita")]
|
||||
WindowRequest::CsdThemeVariant(theme) => {
|
||||
window_handle.window.set_frame_config(theme.into());
|
||||
|
||||
let window_requst = window_user_requests.get_mut(window_id).unwrap();
|
||||
window_requst.refresh_frame = true;
|
||||
}
|
||||
#[cfg(not(feature = "sctk-adwaita"))]
|
||||
WindowRequest::CsdThemeVariant(_) => {}
|
||||
WindowRequest::Resizeable(resizeable) => {
|
||||
window_handle.window.set_resizable(resizeable);
|
||||
|
||||
|
|
@ -537,6 +528,18 @@ pub fn handle_window_requests(winit_state: &mut WinitState) {
|
|||
let event_sink = &mut winit_state.event_sink;
|
||||
event_sink.push_window_event(WindowEvent::Destroyed, *window_id);
|
||||
}
|
||||
WindowRequest::Theme(_theme) => {
|
||||
#[cfg(feature = "sctk-adwaita")]
|
||||
{
|
||||
window_handle.window.set_frame_config(match _theme {
|
||||
Some(theme) => theme.into(),
|
||||
None => sctk_adwaita::FrameConfig::auto(),
|
||||
});
|
||||
|
||||
let window_requst = window_user_requests.get_mut(window_id).unwrap();
|
||||
window_requst.refresh_frame = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue