runDialog: catch exceptions from Gio.app_info_launch_default_for_uri()
An uncaught exception here would mean that the dialog wouldn't close. https://bugzilla.gnome.org/show_bug.cgi?id=653700
This commit is contained in:
parent
1625591598
commit
d12dd1491f
@ -333,12 +333,28 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
|
|
||||||
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
|
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
|
||||||
let file = Gio.file_new_for_path(path);
|
let file = Gio.file_new_for_path(path);
|
||||||
|
try {
|
||||||
Gio.app_info_launch_default_for_uri(file.get_uri(),
|
Gio.app_info_launch_default_for_uri(file.get_uri(),
|
||||||
global.create_app_launch_context());
|
global.create_app_launch_context());
|
||||||
|
} catch (e) {
|
||||||
|
// The exception from gjs contains an error string like:
|
||||||
|
// Error invoking Gio.app_info_launch_default_for_uri: No application
|
||||||
|
// is registered as handling this file
|
||||||
|
// We are only interested in the part after the first colon.
|
||||||
|
let message = e.message.replace(/[^:]*: *(.+)/, '$1');
|
||||||
|
this._showError(message);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
this._showError(e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_showError : function(message) {
|
||||||
this._commandError = true;
|
this._commandError = true;
|
||||||
|
|
||||||
this._errorMessage.set_text(e.message);
|
this._errorMessage.set_text(message);
|
||||||
|
|
||||||
if (!this._errorBox.visible) {
|
if (!this._errorBox.visible) {
|
||||||
let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
|
let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
|
||||||
@ -355,9 +371,6 @@ __proto__: ModalDialog.ModalDialog.prototype,
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function() {
|
open: function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user