From 58837e27b8bcd022a7d8702c0a8de788777e42be Mon Sep 17 00:00:00 2001 From: Hojjat Date: Tue, 15 Sep 2026 17:03:49 -0600 Subject: [PATCH] fix: send pointer leave to root menu if no sub menu is open --- src/shell/grabs/menu/mod.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/shell/grabs/menu/mod.rs b/src/shell/grabs/menu/mod.rs index dafbd6cc..b9adf8f3 100644 --- a/src/shell/grabs/menu/mod.rs +++ b/src/shell/grabs/menu/mod.rs @@ -578,10 +578,12 @@ impl PointerGrab for MenuGrab { PointerTarget::motion(&element.iced, &self.seat, state, &new_event); } } else { + // Keep the root menu hovered while a submenu is open + let keep_root = usize::from(elements.len() > 1); elements .iter_mut() .filter(|element| element.pointer_entered) - .skip(1) + .skip(keep_root) .for_each(|element| { PointerTarget::leave( &element.iced, @@ -1019,10 +1021,11 @@ impl TabletToolGrab for MenuGrab { ); self.last_tablet_idx = Some(i); } else { + let keep_root = usize::from(elements.len() > 1); elements .iter_mut() .filter(|element| element.tablet_entered.is_some()) - .skip(1) + .skip(keep_root) .for_each(|element| { TabletToolTarget::proximity_out( &element.iced,