[gjs: 5/9] Gtk: Provide better message when forgetting a template signal handler
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs: 5/9] Gtk: Provide better message when forgetting a template signal handler
- Date: Fri, 30 Aug 2019 21:15:37 +0000 (UTC)
commit d59c8c24c4cd25675c99f507b64008321991df71
Author: Philip Chimento <philip endlessm com>
Date: Tue Aug 27 12:07:33 2019 +0300
Gtk: Provide better message when forgetting a template signal handler
The old message was not very enlightening: "this[handlerName] is
undefined".
installed-tests/js/testLegacyGtk.js | 2 ++
modules/overrides/Gtk.js | 12 ++++++++----
2 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/installed-tests/js/testLegacyGtk.js b/installed-tests/js/testLegacyGtk.js
index 97cc8899..b1dbe72e 100644
--- a/installed-tests/js/testLegacyGtk.js
+++ b/installed-tests/js/testLegacyGtk.js
@@ -65,6 +65,8 @@ const MyComplexGtkSubclassFromResource = new Lang.Class({
expect(this.label_child2).toEqual(jasmine.anything());
expect(this._internal_label_child).toEqual(jasmine.anything());
},
+
+ templateCallback() {},
});
function validateTemplate(description, ClassName) {
diff --git a/modules/overrides/Gtk.js b/modules/overrides/Gtk.js
index 2a7c860c..7d0fdacc 100644
--- a/modules/overrides/Gtk.js
+++ b/modules/overrides/Gtk.js
@@ -45,14 +45,18 @@ function _init() {
Gtk.Widget.prototype._init = function (params) {
if (this.constructor[Gtk.template]) {
Gtk.Widget.set_connect_func.call(this.constructor, (builder, obj, signalName, handlerName,
connectObj, flags) => {
- if (connectObj !== null)
+ if (connectObj !== null) {
throw new Error('Unsupported template signal attribute "object"');
- else if (flags & GObject.ConnectFlags.SWAPPED)
+ } else if (flags & GObject.ConnectFlags.SWAPPED) {
throw new Error('Unsupported template signal flag "swapped"');
- else if (flags & GObject.ConnectFlags.AFTER)
+ } else if (typeof this[handlerName] === 'undefined') {
+ throw new Error(`A handler called ${handlerName} was not ` +
+ `defined for signal ${signalName} on ${this}`);
+ } else if (flags & GObject.ConnectFlags.AFTER) {
obj.connect_after(signalName, this[handlerName].bind(this));
- else
+ } else {
obj.connect(signalName, this[handlerName].bind(this));
+ }
});
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]