diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js index 5c20b085c..304733efb 100644 --- a/js/ui/modalDialog.js +++ b/js/ui/modalDialog.js @@ -58,7 +58,9 @@ const ModalDialog = new Lang.Class({ this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy)); + this._pressedKey = null; this._buttonKeys = {}; + this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent)); this._backgroundBin = new St.Bin(); @@ -179,10 +181,19 @@ const ModalDialog = new Lang.Class({ return button; }, - _onKeyReleaseEvent: function(object, event) { - let symbol = event.get_key_symbol(); - let buttonInfo = this._buttonKeys[symbol]; + _onKeyPressEvent: function(object, event) { + this._pressedKey = event.get_key_symbol(); + }, + _onKeyReleaseEvent: function(object, event) { + let pressedKey = this._pressedKey; + this._pressedKey = null; + + let symbol = event.get_key_symbol(); + if (symbol != pressedKey) + return false; + + let buttonInfo = this._buttonKeys[symbol]; if (!buttonInfo) return false;