desktop: Add RuffleEvent::ThemeChanged

This commit is contained in:
Kamil Jarosz 2024-07-20 01:34:07 +02:00
parent 14d5b3ace3
commit 52192fa9ca
3 changed files with 17 additions and 5 deletions

View File

@ -538,6 +538,10 @@ impl App {
return; return;
} }
winit::event::Event::UserEvent(RuffleEvent::ThemeChanged(theme)) => {
self.gui.borrow().set_theme(theme);
}
_ => (), _ => (),
} }

View File

@ -1,6 +1,7 @@
//! Custom event type for desktop ruffle //! Custom event type for desktop ruffle
use crate::player::LaunchOptions; use crate::player::LaunchOptions;
use winit::window::Theme;
/// User-defined events. /// User-defined events.
pub enum RuffleEvent { pub enum RuffleEvent {
@ -24,4 +25,7 @@ pub enum RuffleEvent {
/// The user selected an item in the right-click context menu. /// The user selected an item in the right-click context menu.
ContextMenuItemClicked(usize), ContextMenuItemClicked(usize),
/// System theme has changed.
ThemeChanged(Theme),
} }

View File

@ -138,6 +138,14 @@ impl GuiController {
}) })
} }
pub fn set_theme(&self, theme: Theme) {
self.egui_winit.egui_ctx().set_visuals(match theme {
Theme::Light => egui::Visuals::light(),
Theme::Dark => egui::Visuals::dark(),
});
self.window.request_redraw();
}
pub fn descriptors(&self) -> &Arc<Descriptors> { pub fn descriptors(&self) -> &Arc<Descriptors> {
&self.descriptors &self.descriptors
} }
@ -178,11 +186,7 @@ impl GuiController {
} }
if let WindowEvent::ThemeChanged(theme) = &event { if let WindowEvent::ThemeChanged(theme) = &event {
let visuals = match theme { self.set_theme(*theme);
Theme::Dark => egui::Visuals::dark(),
Theme::Light => egui::Visuals::light(),
};
self.egui_winit.egui_ctx().set_visuals(visuals);
} }
if matches!( if matches!(