diff --git a/src/layout/layer.rs b/src/layout/layer.rs index ed57939..9fbcfd8 100644 --- a/src/layout/layer.rs +++ b/src/layout/layer.rs @@ -97,6 +97,10 @@ impl Layers { LayerIteratorMut::new(&mut self.vec, self.last) } + pub fn iter_orderless_mut(&mut self) -> impl Iterator { + self.vec.iter_mut().map(|n| &mut n.data).enumerate() + } + pub fn iter(&self) -> impl Iterator { self.indices().map(|i| (i, &self.vec[i].data)) } diff --git a/src/render/mod.rs b/src/render/mod.rs index d9b9195..5f1e184 100644 --- a/src/render/mod.rs +++ b/src/render/mod.rs @@ -61,13 +61,13 @@ impl UiRenderer { pub fn update(&mut self, device: &Device, queue: &Queue, ui: &mut Ui) { self.active.clear(); - for (i, ulayer) in ui.data.layers.iter_mut() { + for (i, ulayer) in ui.data.layers.iter_orderless_mut() { self.active.push(i); let primitives = &mut ulayer.primitives; for change in primitives.apply_free() { if let Some(inst) = ui.data.active.get_mut(&change.id) { for h in &mut inst.primitives { - if h.inst_idx == change.old { + if h.layer == i && h.inst_idx == change.old { h.inst_idx = change.new; break; }