From 7a97e9dee2e838509425f80d0b873d2ac097bd9e Mon Sep 17 00:00:00 2001 From: Aleksander Date: Sun, 21 Sep 2025 13:39:14 +0200 Subject: [PATCH] wgui: prevent data copy, parser data --- wgui/src/parser/mod.rs | 208 ++++++++++++------ wlx-overlay-s/src/gui/panel/mod.rs | 6 +- wlx-overlay-s/src/overlays/bar.rs | 2 +- .../src/overlays/keyboard/builder.rs | 14 +- 4 files changed, 157 insertions(+), 73 deletions(-) diff --git a/wgui/src/parser/mod.rs b/wgui/src/parser/mod.rs index d042164..88c1b48 100644 --- a/wgui/src/parser/mod.rs +++ b/wgui/src/parser/mod.rs @@ -9,7 +9,7 @@ mod widget_sprite; use crate::{ assets::AssetProvider, - components::{Component, ComponentTrait, ComponentWeak}, + components::{Component, ComponentWeak}, drawing::{self}, event::EventListenerCollection, globals::WguiGlobals, @@ -49,25 +49,55 @@ struct ParserFile { template_parameters: HashMap, Rc>, } +#[derive(Default, Clone)] +pub struct ParserData { + pub components_by_id: HashMap, ComponentWeak>, + pub components_by_widget_id: HashMap, + pub components: Vec, + pub ids: HashMap, WidgetID>, + pub templates: HashMap, Rc