[gnome-shell] runDialog: catch exceptions from Gio.app_info_launch_default_for_uri()
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] runDialog: catch exceptions from Gio.app_info_launch_default_for_uri()
- Date: Tue, 19 Jul 2011 23:42:14 +0000 (UTC)
commit d12dd1491f8a31c40de50b958c500208b4c2980d
Author: Rui Matos <tiagomatos gmail com>
Date: Wed Jul 6 20:43:49 2011 +0100
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
js/ui/runDialog.js | 55 ++++++++++++++++++++++++++++++++-------------------
1 files changed, 34 insertions(+), 21 deletions(-)
---
diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js
index 5152ecb..bd6fc25 100644
--- a/js/ui/runDialog.js
+++ b/js/ui/runDialog.js
@@ -333,33 +333,46 @@ __proto__: ModalDialog.ModalDialog.prototype,
if (GLib.file_test(path, GLib.FileTest.EXISTS)) {
let file = Gio.file_new_for_path(path);
- Gio.app_info_launch_default_for_uri(file.get_uri(),
- global.create_app_launch_context());
- } else {
- this._commandError = true;
-
- this._errorMessage.set_text(e.message);
-
- if (!this._errorBox.visible) {
- let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
-
- let parentActor = this._errorBox.get_parent();
- Tweener.addTween(parentActor,
- { height: parentActor.height + errorBoxNaturalHeight,
- time: DIALOG_GROW_TIME,
- transition: 'easeOutQuad',
- onComplete: Lang.bind(this,
- function() {
- parentActor.set_height(-1);
- this._errorBox.show();
- })
- });
+ try {
+ Gio.app_info_launch_default_for_uri(file.get_uri(),
+ 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 {
+ this._showError(e.message);
}
}
}
},
+ _showError : function(message) {
+ this._commandError = true;
+
+ this._errorMessage.set_text(message);
+
+ if (!this._errorBox.visible) {
+ let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
+
+ let parentActor = this._errorBox.get_parent();
+ Tweener.addTween(parentActor,
+ { height: parentActor.height + errorBoxNaturalHeight,
+ time: DIALOG_GROW_TIME,
+ transition: 'easeOutQuad',
+ onComplete: Lang.bind(this,
+ function() {
+ parentActor.set_height(-1);
+ this._errorBox.show();
+ })
+ });
+ }
+ },
+
open: function() {
this._history.lastItem();
this._errorBox.hide();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]