From a0d9f9ba90e88794ee5b62b3cee75e2c3c77c141 Mon Sep 17 00:00:00 2001 From: adrien <221212@umons.ac.be> Date: Wed, 1 Jul 2026 07:35:27 +0200 Subject: [PATCH] remove deadlock from example --- examples/styling_engine/src/custom_engine.rs | 13 +++++-------- examples/styling_engine/src/main.rs | 3 --- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/examples/styling_engine/src/custom_engine.rs b/examples/styling_engine/src/custom_engine.rs index 1f5f9ca08..9af27d7b6 100644 --- a/examples/styling_engine/src/custom_engine.rs +++ b/examples/styling_engine/src/custom_engine.rs @@ -76,17 +76,14 @@ impl ESSEngine { } } -/// This implementation basically do nothing. This is only the minimum requirement with caching. -impl ThemeStyle for ESSEngine { - fn style(&mut self, ui: &Ui, classes: &Classes, state: WidgetState) -> BaseStyle { - ui.get_widget_style::(classes, state) - } -} - impl ThemeStyle for ESSEngine { fn style(&mut self, ui: &Ui, classes: &Classes, state: WidgetState) -> ButtonStyle { self.cache.get(classes, state, || { - let mut default = ui.get_widget_style::(classes, state); + let base = ui.get_widget_style::(classes, state); + let mut default = ButtonStyle { + frame: base.frame, + text_style: base.text, + }; for class in classes.list() { if let Some(properties) = self.info.get(&class.to_string()) { for (property, value) in properties { diff --git a/examples/styling_engine/src/main.rs b/examples/styling_engine/src/main.rs index 0eaff6e44..e55e04666 100644 --- a/examples/styling_engine/src/main.rs +++ b/examples/styling_engine/src/main.rs @@ -1,7 +1,6 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release #![expect(rustdoc::missing_crate_level_docs)] // it's an example -use eframe::egui::widget_style::BaseStyle; use eframe::egui::{ self, Button, Frame, Margin, Panel, UiBuilder, widget_style::{ButtonStyle, HasClasses as _}, @@ -36,7 +35,6 @@ fn main() -> eframe::Result { eframe::run_ui_native("My egui App", options, move |ui, _frame| { // Register the theme plugin and which style they implement if let Ok(engine) = ESSEngine::try_parse(&style_code) { - ui.add_widget_theme::(engine.clone()); ui.add_widget_theme::(engine); } @@ -54,7 +52,6 @@ fn main() -> eframe::Result { && let Ok(engine) = ESSEngine::try_parse(&style_code) { // Overwrite the current theme with the new one.clear - ui.replace_widget_theme::(engine.clone()); ui.replace_widget_theme::(engine); } });