popupMenu: block input events when menu is closing
At the moment gnome-shell can get really confused if a menu is fading out and gets clicked. It can lead to mouse pointer input getting stuck until the shell is restarted. This commit addresses the problem by ignoring input events that come in when the menu is closing.
This commit is contained in:
parent
616852cf2b
commit
a80e16d09e
@ -123,12 +123,18 @@ var PopupBaseMenuItem = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onButtonReleaseEvent(actor, event) {
|
_onButtonReleaseEvent(actor, event) {
|
||||||
|
if (this._parent && !this._parent.isOpen)
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.actor.remove_style_pseudo_class ('active');
|
||||||
this.activate(event);
|
this.activate(event);
|
||||||
return Clutter.EVENT_STOP;
|
return Clutter.EVENT_STOP;
|
||||||
},
|
},
|
||||||
|
|
||||||
_onTouchEvent(actor, event) {
|
_onTouchEvent(actor, event) {
|
||||||
|
if (this._parent && !this._parent.isOpen)
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
|
||||||
if (event.type() == Clutter.EventType.TOUCH_END) {
|
if (event.type() == Clutter.EventType.TOUCH_END) {
|
||||||
this.actor.remove_style_pseudo_class ('active');
|
this.actor.remove_style_pseudo_class ('active');
|
||||||
this.activate(event);
|
this.activate(event);
|
||||||
@ -141,6 +147,9 @@ var PopupBaseMenuItem = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onKeyPressEvent(actor, event) {
|
_onKeyPressEvent(actor, event) {
|
||||||
|
if (this._parent && !this._parent.isOpen)
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
|
||||||
let state = event.get_state();
|
let state = event.get_state();
|
||||||
|
|
||||||
// if user has a modifier down (except capslock and numlock)
|
// if user has a modifier down (except capslock and numlock)
|
||||||
|
Loading…
Reference in New Issue
Block a user