Skip to content

Commit

Permalink
fix: improve scope handling (#1189)
Browse files Browse the repository at this point in the history
* fix: first attempt at fixing scopes for widgets with children

* fix: new scope for every child

* chore: remove debug print
  • Loading branch information
w-lfchen authored Dec 26, 2024
1 parent 2c81b3f commit 81398d6
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions crates/eww/src/widgets/build_widget.rs
Original file line number Diff line number Diff line change
Expand Up @@ -306,13 +306,14 @@ fn build_children_special_widget(
.children
.get(nth_value as usize)
.with_context(|| format!("No child at index {}", nth_value))?;
let new_child_widget = build_gtk_widget(
tree,
widget_defs.clone(),
custom_widget_invocation.scope,
nth_child_widget_use.clone(),
None,
let scope = tree.register_new_scope(
format!("child {nth_value}"),
Some(custom_widget_invocation.scope),
calling_scope,
HashMap::new(),
)?;
let new_child_widget =
build_gtk_widget(tree, widget_defs.clone(), scope, nth_child_widget_use.clone(), None)?;
child_container.children().iter().for_each(|f| child_container.remove(f));
child_container.set_child(Some(&new_child_widget));
new_child_widget.show();
Expand All @@ -323,7 +324,13 @@ fn build_children_special_widget(
)?;
} else {
for child in &custom_widget_invocation.children {
let child_widget = build_gtk_widget(tree, widget_defs.clone(), custom_widget_invocation.scope, child.clone(), None)?;
let scope = tree.register_new_scope(
String::from("child"),
Some(custom_widget_invocation.scope),
calling_scope,
HashMap::new(),
)?;
let child_widget = build_gtk_widget(tree, widget_defs.clone(), scope, child.clone(), None)?;
gtk_container.add(&child_widget);
}
}
Expand Down

0 comments on commit 81398d6

Please sign in to comment.