diff --git a/src/platform_impl/linux/wayland/window/mod.rs b/src/platform_impl/linux/wayland/window/mod.rs index c8d26c089..fb16099cd 100644 --- a/src/platform_impl/linux/wayland/window/mod.rs +++ b/src/platform_impl/linux/wayland/window/mod.rs @@ -621,9 +621,8 @@ impl Window { } #[inline] - pub fn set_theme(&self, _theme: Theme) { - #[cfg(feature = "sctk-adwaita")] - window.set_frame_config(theme.into()); + pub fn set_theme(&self, theme: Theme) { + self.send_request(WindowRequest::Theme(theme)); } #[inline] diff --git a/src/platform_impl/linux/wayland/window/shim.rs b/src/platform_impl/linux/wayland/window/shim.rs index de0e3f2c2..a6acb90f6 100644 --- a/src/platform_impl/linux/wayland/window/shim.rs +++ b/src/platform_impl/linux/wayland/window/shim.rs @@ -96,6 +96,9 @@ pub enum WindowRequest { /// Window should be closed. Close, + + /// Change window theme. + Theme(Theme), } // The window update comming from the compositor. @@ -537,6 +540,10 @@ 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(_theme.into()); + } }; } }