mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-01 14:21:16 +00:00
Make sure the ids are unique globally
For the inner elements, they don't need to be unique, but that might make debugging easier. For the globals, their name need to be unique.
This commit is contained in:
parent
c9c43766f4
commit
bcc973bb63
2 changed files with 12 additions and 5 deletions
|
@ -127,11 +127,11 @@ pub async fn run_passes(
|
|||
}
|
||||
|
||||
binding_analysis::binding_analysis(doc, diag);
|
||||
unique_id::assign_unique_id(doc);
|
||||
|
||||
for component in (root_component.used_types.borrow().sub_components.iter())
|
||||
.chain(std::iter::once(root_component))
|
||||
{
|
||||
unique_id::assign_unique_id(component);
|
||||
deduplicate_property_read::deduplicate_property_read(component);
|
||||
optimize_useless_rectangles::optimize_useless_rectangles(component);
|
||||
move_declarations::move_declarations(component, diag);
|
||||
|
|
|
@ -17,10 +17,19 @@ use std::rc::Rc;
|
|||
/// This pass make sure that the id of the elements are unique
|
||||
///
|
||||
/// It currently does so by adding a number to the existing id
|
||||
pub fn assign_unique_id(component: &Rc<Component>) {
|
||||
pub fn assign_unique_id(doc: &Document) {
|
||||
let mut count = 0;
|
||||
assign_unique_id_in_component(&doc.root_component, &mut count);
|
||||
for c in &doc.root_component.used_types.borrow().sub_components {
|
||||
assign_unique_id_in_component(c, &mut count);
|
||||
}
|
||||
|
||||
rename_globals(&doc.root_component, count);
|
||||
}
|
||||
|
||||
fn assign_unique_id_in_component(component: &Rc<Component>, count: &mut u32) {
|
||||
recurse_elem_including_sub_components(component, &(), &mut |elem, _| {
|
||||
count += 1;
|
||||
*count += 1;
|
||||
let mut elem_mut = elem.borrow_mut();
|
||||
let old_id = if !elem_mut.id.is_empty() {
|
||||
elem_mut.id.clone()
|
||||
|
@ -29,8 +38,6 @@ pub fn assign_unique_id(component: &Rc<Component>) {
|
|||
};
|
||||
elem_mut.id = format!("{}-{}", old_id, count);
|
||||
});
|
||||
|
||||
rename_globals(component, count);
|
||||
}
|
||||
|
||||
/// Give globals unique name
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue