wgui: new_pass attrib, refactoring

This commit is contained in:
Aleksander
2025-11-27 20:32:59 +01:00
parent 9696d6730d
commit 192ffab4fd
8 changed files with 36 additions and 14 deletions

View File

@@ -774,18 +774,24 @@ fn process_component(ctx: &mut ParserContext, component: Component, widget_id: W
ctx.insert_component(widget_id, component, component_id);
}
fn parse_widget_universal(ctx: &mut ParserContext, widget_id: WidgetID, attribs: &[AttribPair]) {
fn parse_widget_universal(ctx: &mut ParserContext, widget: &WidgetPair, attribs: &[AttribPair]) {
for pair in attribs {
#[allow(clippy::single_match)]
match pair.attrib.as_ref() {
"id" => {
// Attach a specific widget to name-ID map (just like getElementById)
ctx.insert_id(&pair.value, widget_id);
ctx.insert_id(&pair.value, widget.id);
}
"new_pass" => {
if let Some(num) = parse_i32(&pair.value) {
widget.widget.state().new_pass = num != 0;
} else {
print_invalid_attrib(&pair.attrib, &pair.value);
}
}
"interactable" => {
if matches!(&pair.value.parse::<i32>(), Ok(0)) {
log::info!("setting {widget_id:?} to noninteractable.");
ctx.layout.state.widgets.get(widget_id).unwrap().state().interactable = false;
if let Some(num) = parse_i32(&pair.value) {
widget.widget.state().interactable = num != 0;
} else {
print_invalid_attrib(&pair.attrib, &pair.value);
}

View File

@@ -1,6 +1,6 @@
use crate::{
layout::WidgetID,
parser::{parse_children, parse_widget_universal, style::parse_style, AttribPair, ParserContext, ParserFile},
parser::{AttribPair, ParserContext, ParserFile, parse_children, parse_widget_universal, style::parse_style},
widget::div::WidgetDiv,
};
@@ -15,7 +15,7 @@ pub fn parse_widget_div<'a>(
let (widget, _) = ctx.layout.add_child(parent_id, WidgetDiv::create(), style)?;
parse_widget_universal(ctx, widget.id, attribs);
parse_widget_universal(ctx, &widget, attribs);
parse_children(file, ctx, node, widget.id)?;
Ok(widget.id)

View File

@@ -43,8 +43,8 @@ pub fn parse_widget_label<'a>(
.layout
.add_child(parent_id, WidgetLabel::create(&mut globals.get(), params), style)?;
parse_widget_universal(ctx, widget.id, attribs);
parse_widget_universal(ctx, &widget, attribs);
parse_children(file, ctx, node, widget.id)?;
Ok(widget.id)
}
}

View File

@@ -59,8 +59,8 @@ pub fn parse_widget_rectangle<'a>(
.layout
.add_child(parent_id, WidgetRectangle::create(params), style)?;
parse_widget_universal(ctx, widget.id, attribs);
parse_widget_universal(ctx, &widget, attribs);
parse_children(file, ctx, node, widget.id)?;
Ok(widget.id)
}
}

View File

@@ -59,8 +59,8 @@ pub fn parse_widget_sprite<'a>(
let (widget, _) = ctx.layout.add_child(parent_id, WidgetSprite::create(params), style)?;
parse_widget_universal(ctx, widget.id, attribs);
parse_widget_universal(ctx, &widget, attribs);
parse_children(file, ctx, node, widget.id)?;
Ok(widget.id)
}
}