From edb0d07d5bcc41e8b55e2b972004aceda587c6f9 Mon Sep 17 00:00:00 2001 From: Melody Madeline Lyons Date: Wed, 10 Jul 2024 13:57:19 -0700 Subject: [PATCH] Fix theme saving --- crates/ui/src/windows/preferences.rs | 20 ++++++++++---------- src/app/mod.rs | 11 ++++++++--- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/crates/ui/src/windows/preferences.rs b/crates/ui/src/windows/preferences.rs index 780ee0d9..28cd5a6b 100644 --- a/crates/ui/src/windows/preferences.rs +++ b/crates/ui/src/windows/preferences.rs @@ -30,13 +30,13 @@ pub struct Window { edit_rtp_path_name: String, edit_rtp_path_path: String, - appearance_mode: AppearanceMode, + tab: Tab, } #[derive(Clone, Copy)] #[derive(Default, PartialEq, Eq)] #[derive(strum::EnumIter, strum::Display)] -enum AppearanceMode { +enum Tab { #[default] #[strum(to_string = "Editor Settings")] EditorSettings, @@ -136,20 +136,20 @@ impl luminol_core::Window for Window { ) { egui::Window::new("Preferences").open(open).show(ctx, |ui| { ui.horizontal(|ui| { - for mode in AppearanceMode::iter() { - ui.selectable_value(&mut self.appearance_mode, mode, mode.to_string()); + for mode in Tab::iter() { + ui.selectable_value(&mut self.tab, mode, mode.to_string()); } }); ui.separator(); - match self.appearance_mode { - AppearanceMode::EguiVisuals => { + match self.tab { + Tab::EguiVisuals => { // TODO maybe make a custom visuals editor? let mut visuals = ctx.style().visuals.clone(); visuals.ui(ui); ctx.set_visuals(visuals); } - AppearanceMode::PresetVisuals => ui.columns(2, |cols| { + Tab::PresetVisuals => ui.columns(2, |cols| { let [left, right] = cols else { unreachable!() }; let mut hover_visual = None; @@ -187,7 +187,7 @@ impl luminol_core::Window for Window { .show(ui, gallery_grid_contents) }); }), - AppearanceMode::CodeTheme => { + Tab::CodeTheme => { ui.horizontal(|ui| { ui.vertical(|ui| { for t in luminol_config::SyntectTheme::iter() { @@ -210,7 +210,7 @@ impl luminol_core::Window for Window { }); }); } - AppearanceMode::EditorSettings => { + Tab::EditorSettings => { ui.label("RTP Paths"); ui.separator(); @@ -254,7 +254,7 @@ impl luminol_core::Window for Window { }); } #[cfg(not(target_arch = "wasm32"))] - AppearanceMode::Terminal => { + Tab::Terminal => { let config = &mut update_state.global_config.terminal; ui.horizontal(|ui| { ui.label("Initial terminal size:"); diff --git a/src/app/mod.rs b/src/app/mod.rs index 74c52e65..eaccc14a 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -66,6 +66,8 @@ pub struct App { #[cfg(not(target_arch = "wasm32"))] _runtime: tokio::runtime::Runtime, + egui_ctx: egui::Context, + #[cfg(feature = "steamworks")] steamworks: Steamworks, } @@ -216,9 +218,9 @@ impl App { } } - let style = luminol_eframe::get_value(storage, "EguiStyle") - .map_or_else(|| cc.egui_ctx.style(), |s| s); - cc.egui_ctx.set_style(style.clone()); + if let Some(style) = luminol_eframe::get_value::(storage, "EguiStyle") { + cc.egui_ctx.set_style(style); + } let bytes_loader = Arc::new(luminol_filesystem::egui_bytes_loader::Loader::new()); cc.egui_ctx.add_bytes_loader(bytes_loader.clone()); @@ -274,6 +276,8 @@ impl App { #[cfg(not(target_arch = "wasm32"))] _runtime: runtime, + egui_ctx: cc.egui_ctx.clone(), + #[cfg(feature = "steamworks")] steamworks, } @@ -427,6 +431,7 @@ impl luminol_eframe::App for App { /// Called by the frame work to save state before shutdown. fn save(&mut self, storage: &mut dyn luminol_eframe::Storage) { + luminol_eframe::set_value(storage, "EguiStyle", &self.egui_ctx.style()); luminol_eframe::set_value(storage, "SavedState", &self.global_config); }