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;
}
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
use crate::player::LaunchOptions;
use winit::window::Theme;
/// User-defined events.
pub enum RuffleEvent {
@ -24,4 +25,7 @@ pub enum RuffleEvent {
/// The user selected an item in the right-click context menu.
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> {
&self.descriptors
}
@ -178,11 +186,7 @@ impl GuiController {
}
if let WindowEvent::ThemeChanged(theme) = &event {
let visuals = match theme {
Theme::Dark => egui::Visuals::dark(),
Theme::Light => egui::Visuals::light(),
};
self.egui_winit.egui_ctx().set_visuals(visuals);
self.set_theme(*theme);
}
if matches!(