popupMenu: Don't handle key presses directly if there are modifiers
Key events involved in a keyboard shortcut are not completely consumed by Mutter. That means that if the popupMenu is bound to a shortcut (e.g. Alt<Space>) and the user keeps the keys pressed, the same key-event will be delivered to the popupMenu. We can workaround this issue filtering out all the events where a a modifier is down (except capslock). Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/372
This commit is contained in:
parent
50e849a186
commit
2e90c5fa4b
@ -141,8 +141,17 @@ var PopupBaseMenuItem = new Lang.Class({
|
||||
},
|
||||
|
||||
_onKeyPressEvent(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
let state = event.get_state();
|
||||
|
||||
// if user has a modifier down (except capslock)
|
||||
// then don't handle the key press here
|
||||
state &= ~Clutter.ModifierType.LOCK_MASK;
|
||||
state &= Clutter.ModifierType.MODIFIER_MASK;
|
||||
|
||||
if (state)
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
|
||||
this.activate(event);
|
||||
return Clutter.EVENT_STOP;
|
||||
|
Loading…
Reference in New Issue
Block a user