modalDialog: Fix auto-completion of prompts immediately upon display
Shell modal dialogs can take their action on a certain key's key-release-event. For example on <enter> the affirmative action is usually run. Make sure that the key was also pressed on the dialog and we're not seeing a spurious key-release-event from a key that was pressed before the dialog was displayed. Rebased original patch for master by Stef Walter to version 3.6.3. https://bugzilla.gnome.org/show_bug.cgi?id=692937
This commit is contained in:
parent
3b07488ef5
commit
ee6f60bc93
@ -57,7 +57,9 @@ const ModalDialog = new Lang.Class({
|
|||||||
|
|
||||||
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
|
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
|
||||||
|
|
||||||
|
this._pressedKey = null;
|
||||||
this._actionKeys = {};
|
this._actionKeys = {};
|
||||||
|
this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
|
||||||
this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
|
this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
|
||||||
|
|
||||||
this._backgroundBin = new St.Bin();
|
this._backgroundBin = new St.Bin();
|
||||||
@ -186,8 +188,18 @@ const ModalDialog = new Lang.Class({
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onKeyPressEvent: function(object, event) {
|
||||||
|
this._pressedKey = event.get_key_symbol();
|
||||||
|
},
|
||||||
|
|
||||||
_onKeyReleaseEvent: function(object, event) {
|
_onKeyReleaseEvent: function(object, event) {
|
||||||
|
let pressedKey = this._pressedKey;
|
||||||
|
this._pressedKey = null;
|
||||||
|
|
||||||
let symbol = event.get_key_symbol();
|
let symbol = event.get_key_symbol();
|
||||||
|
if (symbol != pressedKey)
|
||||||
|
return false;
|
||||||
|
|
||||||
let action = this._actionKeys[symbol];
|
let action = this._actionKeys[symbol];
|
||||||
|
|
||||||
if (action) {
|
if (action) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user