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:
Rui Matos 2011-07-06 20:43:49 +01:00
parent 1625591598
commit d12dd1491f

View File

@ -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() {