From 2d361306b2d55da189688bb4eb8138a3a34e0e4b Mon Sep 17 00:00:00 2001 From: claude Date: Sun, 30 Aug 2026 01:16:48 +0200 Subject: [PATCH] =?UTF-8?q?Fixa=20krasch:=20RefCell-dubbell=C3=A5ning=20n?= =?UTF-8?q?=C3=A4r=20popover-stacken=20t=C3=B6mdes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit popdown() emittar closed synkront, och closed-hanteraren lånar också popover-stacken — register_popover höll kvar sitt borrow_mut under drain-loopen → 'RefCell already borrowed'-panik vid högerklick när en tidigare popover låg kvar i stacken. Stacken töms nu till en lokal Vec innan popdown körs. Co-Authored-By: Claude Fable 5 --- src/menu.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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());