fix: send pointer leave to root menu if no sub menu is open
This commit is contained in:
parent
6645edff64
commit
58837e27b8
1 changed files with 5 additions and 2 deletions
|
|
@ -578,10 +578,12 @@ impl PointerGrab<State> for MenuGrab {
|
||||||
PointerTarget::motion(&element.iced, &self.seat, state, &new_event);
|
PointerTarget::motion(&element.iced, &self.seat, state, &new_event);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Keep the root menu hovered while a submenu is open
|
||||||
|
let keep_root = usize::from(elements.len() > 1);
|
||||||
elements
|
elements
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.filter(|element| element.pointer_entered)
|
.filter(|element| element.pointer_entered)
|
||||||
.skip(1)
|
.skip(keep_root)
|
||||||
.for_each(|element| {
|
.for_each(|element| {
|
||||||
PointerTarget::leave(
|
PointerTarget::leave(
|
||||||
&element.iced,
|
&element.iced,
|
||||||
|
|
@ -1019,10 +1021,11 @@ impl TabletToolGrab<State> for MenuGrab {
|
||||||
);
|
);
|
||||||
self.last_tablet_idx = Some(i);
|
self.last_tablet_idx = Some(i);
|
||||||
} else {
|
} else {
|
||||||
|
let keep_root = usize::from(elements.len() > 1);
|
||||||
elements
|
elements
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.filter(|element| element.tablet_entered.is_some())
|
.filter(|element| element.tablet_entered.is_some())
|
||||||
.skip(1)
|
.skip(keep_root)
|
||||||
.for_each(|element| {
|
.for_each(|element| {
|
||||||
TabletToolTarget::proximity_out(
|
TabletToolTarget::proximity_out(
|
||||||
&element.iced,
|
&element.iced,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue