From c6a32f4109b09345369b8459689dd08ac4eb9e6b Mon Sep 17 00:00:00 2001 From: Aleksander Date: Thu, 18 Sep 2025 17:01:30 +0200 Subject: [PATCH] ParserState: add `fetch_component_by_widget_id` --- wgui/src/parser/component_button.rs | 8 +--- wgui/src/parser/component_checkbox.rs | 2 +- wgui/src/parser/component_slider.rs | 2 +- wgui/src/parser/mod.rs | 56 +++++++++++++++++++++------ 4 files changed, 48 insertions(+), 20 deletions(-) diff --git a/wgui/src/parser/component_button.rs b/wgui/src/parser/component_button.rs index 19fc3d7..872cbb4 100644 --- a/wgui/src/parser/component_button.rs +++ b/wgui/src/parser/component_button.rs @@ -56,11 +56,7 @@ pub fn parse_component_button<'a, U1, U2>( // slight border outlines by default if border_color.is_none() { - border_color = Some(Color::lerp( - &color, - &Color::new(0.0, 0.0, 0.0, color.a), - 0.3, - )); + border_color = Some(Color::lerp(&color, &Color::new(0.0, 0.0, 0.0, color.a), 0.3)); } if hover_color.is_none() { @@ -87,7 +83,7 @@ pub fn parse_component_button<'a, U1, U2>( }, )?; - process_component(file, ctx, node, Component(component)); + process_component(file, ctx, node, Component(component), new_id); parse_children(file, ctx, node, new_id)?; Ok(new_id) diff --git a/wgui/src/parser/component_checkbox.rs b/wgui/src/parser/component_checkbox.rs index 204dfb5..fbb1ea2 100644 --- a/wgui/src/parser/component_checkbox.rs +++ b/wgui/src/parser/component_checkbox.rs @@ -50,7 +50,7 @@ pub fn parse_component_checkbox<'a, U1, U2>( }, )?; - process_component(file, ctx, node, Component(component)); + process_component(file, ctx, node, Component(component), new_id); Ok(new_id) } diff --git a/wgui/src/parser/component_slider.rs b/wgui/src/parser/component_slider.rs index fbfb80c..29138d1 100644 --- a/wgui/src/parser/component_slider.rs +++ b/wgui/src/parser/component_slider.rs @@ -46,7 +46,7 @@ pub fn parse_component_slider<'a, U1, U2>( }, )?; - process_component(file, ctx, node, Component(component)); + process_component(file, ctx, node, Component(component), new_id); Ok(new_id) } diff --git a/wgui/src/parser/mod.rs b/wgui/src/parser/mod.rs index e785673..f6ff47a 100644 --- a/wgui/src/parser/mod.rs +++ b/wgui/src/parser/mod.rs @@ -59,14 +59,15 @@ pub struct ParserState { macro_attribs: HashMap, MacroAttribs>, pub var_map: HashMap, Rc>, pub components: Vec, - pub components_id_map: HashMap, std::rc::Weak>, + pub components_by_id: HashMap, std::rc::Weak>, + pub components_by_widget_id: HashMap>, pub templates: HashMap, Rc