|
@@ -1204,6 +1204,7 @@ pub enum WindowMessage {
|
|
|
SetIgnoreCursorEvents(bool),
|
|
|
SetProgressBar(ProgressBarState),
|
|
|
SetTitleBarStyle(tauri_utils::TitleBarStyle),
|
|
|
+ SetTheme(Option<Theme>),
|
|
|
DragWindow,
|
|
|
ResizeDragWindow(tauri_runtime::ResizeDirection),
|
|
|
RequestRedraw,
|
|
@@ -2026,6 +2027,13 @@ impl<T: UserEvent> WindowDispatch<T> for WryWindowDispatcher<T> {
|
|
|
Message::Window(self.window_id, WindowMessage::SetTitleBarStyle(style)),
|
|
|
)
|
|
|
}
|
|
|
+
|
|
|
+ fn set_theme(&self, theme: Option<Theme>) -> Result<()> {
|
|
|
+ send_user_message(
|
|
|
+ &self.context,
|
|
|
+ Message::Window(self.window_id, WindowMessage::SetTheme(theme)),
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#[derive(Clone)]
|
|
@@ -2286,6 +2294,18 @@ impl<T: UserEvent> RuntimeHandle<T> for WryHandle<T> {
|
|
|
.map_err(|_| Error::FailedToGetCursorPosition)
|
|
|
}
|
|
|
|
|
|
+ fn set_theme(&self, theme: Option<Theme>) {
|
|
|
+ self
|
|
|
+ .context
|
|
|
+ .main_thread
|
|
|
+ .window_target
|
|
|
+ .set_theme(match theme {
|
|
|
+ Some(Theme::Light) => Some(TaoTheme::Light),
|
|
|
+ Some(Theme::Dark) => Some(TaoTheme::Dark),
|
|
|
+ _ => None,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
#[cfg(target_os = "macos")]
|
|
|
fn show(&self) -> tauri_runtime::Result<()> {
|
|
|
send_user_message(
|
|
@@ -2564,6 +2584,14 @@ impl<T: UserEvent> Runtime<T> for Wry<T> {
|
|
|
.map_err(|_| Error::FailedToGetCursorPosition)
|
|
|
}
|
|
|
|
|
|
+ fn set_theme(&self, theme: Option<Theme>) {
|
|
|
+ self.event_loop.set_theme(match theme {
|
|
|
+ Some(Theme::Light) => Some(TaoTheme::Light),
|
|
|
+ Some(Theme::Dark) => Some(TaoTheme::Dark),
|
|
|
+ _ => None,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
#[cfg(target_os = "macos")]
|
|
|
fn set_activation_policy(&mut self, activation_policy: ActivationPolicy) {
|
|
|
self
|
|
@@ -2996,6 +3024,13 @@ fn handle_user_message<T: UserEvent>(
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
+ WindowMessage::SetTheme(theme) => {
|
|
|
+ window.set_theme(match theme {
|
|
|
+ Some(Theme::Light) => Some(TaoTheme::Light),
|
|
|
+ Some(Theme::Dark) => Some(TaoTheme::Dark),
|
|
|
+ _ => None,
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|