shellMountDialog: Close all dialogs when pressing Escape key
Since we don't really know what the buttons we're adding to the dialogs are about, we can't configure a button to "be clicked" when the escape key is pressed. So add a separate escape key handler to fix that, return -1 and abort the request. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/961
This commit is contained in:
parent
0b51a52c9b
commit
6d2c834694
@ -236,6 +236,15 @@ var ShellMountQuestionDialog = GObject.registerClass({
|
|||||||
this.contentLayout.add_child(this._content);
|
this.contentLayout.add_child(this._content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vfunc_key_release_event(event) {
|
||||||
|
if (event.keyval === Clutter.KEY_Escape) {
|
||||||
|
this.emit('response', -1);
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
|
}
|
||||||
|
|
||||||
update(message, choices) {
|
update(message, choices) {
|
||||||
_setLabelsForMessage(this._content, message);
|
_setLabelsForMessage(this._content, message);
|
||||||
_setButtonsForChoices(this, this._oldChoices, choices);
|
_setButtonsForChoices(this, this._oldChoices, choices);
|
||||||
@ -481,7 +490,13 @@ var ShellProcessesDialog = GObject.registerClass({
|
|||||||
this.contentLayout.add_child(this._applicationSection);
|
this.contentLayout.add_child(this._applicationSection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vfunc_key_release_event(event) {
|
||||||
|
if (event.keyval === Clutter.KEY_Escape) {
|
||||||
|
this.emit('response', -1);
|
||||||
|
return Clutter.EVENT_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Clutter.EVENT_PROPAGATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_setAppsForPids(pids) {
|
_setAppsForPids(pids) {
|
||||||
@ -662,8 +677,17 @@ var GnomeShellMountOpHandler = class {
|
|||||||
|
|
||||||
this._dialog = new ShellMountQuestionDialog(message);
|
this._dialog = new ShellMountQuestionDialog(message);
|
||||||
this._dialog.connect('response', (object, choice) => {
|
this._dialog.connect('response', (object, choice) => {
|
||||||
this._clearCurrentRequest(Gio.MountOperationResult.HANDLED,
|
let response;
|
||||||
{ choice: GLib.Variant.new('i', choice) });
|
let details = {};
|
||||||
|
|
||||||
|
if (choice == -1) {
|
||||||
|
response = Gio.MountOperationResult.ABORTED;
|
||||||
|
} else {
|
||||||
|
response = Gio.MountOperationResult.HANDLED;
|
||||||
|
details['choice'] = GLib.Variant.new('i', choice);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._clearCurrentRequest(response, details);
|
||||||
});
|
});
|
||||||
|
|
||||||
this._dialog.update(message, choices);
|
this._dialog.update(message, choices);
|
||||||
|
Loading…
Reference in New Issue
Block a user