1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 05:40:03 -04:00

Fix compilation of egui_extras without serde feature (#5014)

* Closes https://github.com/emilk/egui/issues/4771
This commit is contained in:
Emil Ernerfeldt
2024-08-27 11:38:33 +02:00
committed by GitHub
parent bd7d71e7fd
commit 58bc67e02f
8 changed files with 82 additions and 21 deletions

View File

@@ -153,16 +153,22 @@ impl CodeTheme {
///
/// There is one dark and one light theme stored at any one time.
pub fn from_memory(ctx: &egui::Context) -> Self {
if ctx.style().visuals.dark_mode {
ctx.data_mut(|d| {
d.get_persisted(egui::Id::new("dark"))
.unwrap_or_else(Self::dark)
})
#![allow(clippy::needless_return)]
let (id, default) = if ctx.style().visuals.dark_mode {
(egui::Id::new("dark"), Self::dark as fn() -> Self)
} else {
ctx.data_mut(|d| {
d.get_persisted(egui::Id::new("light"))
.unwrap_or_else(Self::light)
})
(egui::Id::new("light"), Self::light as fn() -> Self)
};
#[cfg(feature = "serde")]
{
return ctx.data_mut(|d| d.get_persisted(id).unwrap_or_else(default));
}
#[cfg(not(feature = "serde"))]
{
return ctx.data_mut(|d| d.get_temp(id).unwrap_or_else(default));
}
}
@@ -170,11 +176,17 @@ impl CodeTheme {
///
/// There is one dark and one light theme stored at any one time.
pub fn store_in_memory(self, ctx: &egui::Context) {
if self.dark_mode {
ctx.data_mut(|d| d.insert_persisted(egui::Id::new("dark"), self));
let id = if ctx.style().visuals.dark_mode {
egui::Id::new("dark")
} else {
ctx.data_mut(|d| d.insert_persisted(egui::Id::new("light"), self));
}
egui::Id::new("light")
};
#[cfg(feature = "serde")]
ctx.data_mut(|d| d.insert_persisted(id, self));
#[cfg(not(feature = "serde"))]
ctx.data_mut(|d| d.insert_temp(id, self));
}
}
@@ -245,9 +257,15 @@ impl CodeTheme {
pub fn ui(&mut self, ui: &mut egui::Ui) {
ui.horizontal_top(|ui| {
let selected_id = egui::Id::NULL;
#[cfg(feature = "serde")]
let mut selected_tt: TokenType =
ui.data_mut(|d| *d.get_persisted_mut_or(selected_id, TokenType::Comment));
#[cfg(not(feature = "serde"))]
let mut selected_tt: TokenType =
ui.data_mut(|d| *d.get_temp_mut_or(selected_id, TokenType::Comment));
ui.vertical(|ui| {
ui.set_width(150.0);
egui::widgets::global_dark_light_mode_buttons(ui);
@@ -288,7 +306,10 @@ impl CodeTheme {
ui.add_space(16.0);
#[cfg(feature = "serde")]
ui.data_mut(|d| d.insert_persisted(selected_id, selected_tt));
#[cfg(not(feature = "serde"))]
ui.data_mut(|d| d.insert_temp(selected_id, selected_tt));
egui::Frame::group(ui.style())
.inner_margin(egui::Vec2::splat(2.0))