Compare commits

1 Commits

Author SHA1 Message Date
140be50baa fix layer mismatch with apply free in renderer 2025-11-22 03:15:21 -05:00
2 changed files with 6 additions and 2 deletions

View File

@@ -97,6 +97,10 @@ impl Layers {
LayerIteratorMut::new(&mut self.vec, self.last) LayerIteratorMut::new(&mut self.vec, self.last)
} }
pub fn iter_orderless_mut(&mut self) -> impl Iterator<Item = (usize, &mut Layer)> {
self.vec.iter_mut().map(|n| &mut n.data).enumerate()
}
pub fn iter(&self) -> impl Iterator<Item = (usize, &Layer)> { pub fn iter(&self) -> impl Iterator<Item = (usize, &Layer)> {
self.indices().map(|i| (i, &self.vec[i].data)) self.indices().map(|i| (i, &self.vec[i].data))
} }

View File

@@ -61,13 +61,13 @@ impl UiRenderer {
pub fn update(&mut self, device: &Device, queue: &Queue, ui: &mut Ui) { pub fn update(&mut self, device: &Device, queue: &Queue, ui: &mut Ui) {
self.active.clear(); 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); self.active.push(i);
let primitives = &mut ulayer.primitives; let primitives = &mut ulayer.primitives;
for change in primitives.apply_free() { for change in primitives.apply_free() {
if let Some(inst) = ui.data.active.get_mut(&change.id) { if let Some(inst) = ui.data.active.get_mut(&change.id) {
for h in &mut inst.primitives { 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; h.inst_idx = change.new;
break; break;
} }