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

remove deadlock from example

This commit is contained in:
adrien
2026-07-01 07:35:27 +02:00
parent e051dbe0fb
commit a0d9f9ba90
2 changed files with 5 additions and 11 deletions

View File

@@ -76,17 +76,14 @@ impl ESSEngine {
} }
} }
/// This implementation basically do nothing. This is only the minimum requirement with caching.
impl ThemeStyle<BaseStyle> for ESSEngine {
fn style(&mut self, ui: &Ui, classes: &Classes, state: WidgetState) -> BaseStyle {
ui.get_widget_style::<BaseStyle>(classes, state)
}
}
impl ThemeStyle<ButtonStyle> for ESSEngine { impl ThemeStyle<ButtonStyle> for ESSEngine {
fn style(&mut self, ui: &Ui, classes: &Classes, state: WidgetState) -> ButtonStyle { fn style(&mut self, ui: &Ui, classes: &Classes, state: WidgetState) -> ButtonStyle {
self.cache.get(classes, state, || { self.cache.get(classes, state, || {
let mut default = ui.get_widget_style::<ButtonStyle>(classes, state); let base = ui.get_widget_style::<BaseStyle>(classes, state);
let mut default = ButtonStyle {
frame: base.frame,
text_style: base.text,
};
for class in classes.list() { for class in classes.list() {
if let Some(properties) = self.info.get(&class.to_string()) { if let Some(properties) = self.info.get(&class.to_string()) {
for (property, value) in properties { for (property, value) in properties {

View File

@@ -1,7 +1,6 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release #![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 #![expect(rustdoc::missing_crate_level_docs)] // it's an example
use eframe::egui::widget_style::BaseStyle;
use eframe::egui::{ use eframe::egui::{
self, Button, Frame, Margin, Panel, UiBuilder, self, Button, Frame, Margin, Panel, UiBuilder,
widget_style::{ButtonStyle, HasClasses as _}, widget_style::{ButtonStyle, HasClasses as _},
@@ -36,7 +35,6 @@ fn main() -> eframe::Result {
eframe::run_ui_native("My egui App", options, move |ui, _frame| { eframe::run_ui_native("My egui App", options, move |ui, _frame| {
// Register the theme plugin and which style they implement // Register the theme plugin and which style they implement
if let Ok(engine) = ESSEngine::try_parse(&style_code) { if let Ok(engine) = ESSEngine::try_parse(&style_code) {
ui.add_widget_theme::<BaseStyle>(engine.clone());
ui.add_widget_theme::<ButtonStyle>(engine); ui.add_widget_theme::<ButtonStyle>(engine);
} }
@@ -54,7 +52,6 @@ fn main() -> eframe::Result {
&& let Ok(engine) = ESSEngine::try_parse(&style_code) && let Ok(engine) = ESSEngine::try_parse(&style_code)
{ {
// Overwrite the current theme with the new one.clear // Overwrite the current theme with the new one.clear
ui.replace_widget_theme::<BaseStyle>(engine.clone());
ui.replace_widget_theme::<ButtonStyle>(engine); ui.replace_widget_theme::<ButtonStyle>(engine);
} }
}); });