diff --git a/src/menu.rs b/src/menu.rs index 9375633..dfc1b85 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -179,8 +179,11 @@ fn register_popover(ctx: &Rc, popover: &impl IsA) { }) .unwrap_or(false); if !nested { - for old in ctx.popover_stack.borrow_mut().drain(..) { - old.popdown(); + // töm stacken FÖRE popdown — closed-hanterarna lånar också + // stacken (popdown emittar closed synkront → dubbellåning annars) + let old: Vec = ctx.popover_stack.borrow_mut().drain(..).collect(); + for p in old { + p.popdown(); } } ctx.popover_stack.borrow_mut().push(p.clone());