[gjs/wip/gobj-kitchen-sink: 26/26] GObject: Move the 'on_'-prefixed signal auto-connections to 'SignalImpls'
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs/wip/gobj-kitchen-sink: 26/26] GObject: Move the 'on_'-prefixed signal auto-connections to 'SignalImpls'
- Date: Sat, 28 Jan 2012 09:05:44 +0000 (UTC)
commit 6a1b1938cd89d7b48cfbdcb3559bb01b3df3c0a5
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sat Jan 28 04:01:01 2012 -0500
GObject: Move the 'on_'-prefixed signal auto-connections to 'SignalImpls'
For parity with the vfunc overrides, move the magic 'on_' signal
auto-connections to a new hash, 'SignalImpls'
modules/overrides/GObject.js | 26 +++++++++++++-------------
test/js/testGObjectClass.js | 14 ++++++++------
2 files changed, 21 insertions(+), 19 deletions(-)
---
diff --git a/modules/overrides/GObject.js b/modules/overrides/GObject.js
index 153d526..8ca0781 100644
--- a/modules/overrides/GObject.js
+++ b/modules/overrides/GObject.js
@@ -41,11 +41,13 @@ const GObjectMeta = new Lang.Class({
let signals = params.Signals;
let ifaces = params.Implements;
let vfuncImpls = params.VFuncImpls;
+ let signalImpls = params.SignalImpls;
delete params.Properties;
delete params.Signals;
delete params.Implements;
delete params.VFuncImpls;
+ delete params.SignalImpls;
if (properties) {
for (let prop in properties) {
@@ -83,19 +85,17 @@ const GObjectMeta = new Lang.Class({
}
}
- for (let prop in params) {
- let value = this.prototype[prop];
- if (typeof value === 'function') {
- if (prop.slice(0, 3) == 'on_') {
- let id = GObject.signal_lookup(prop.slice(3).replace('_', '-'), this.$gtype);
- if (id != 0) {
- GObject.signal_override_class_closure(id, this.$gtype, function() {
- let argArray = Array.prototype.slice.call(arguments);
- let emitter = argArray.shift();
-
- value.apply(emitter, argArray);
- });
- }
+ if (signalImpls) {
+ for (let prop in signalImpls) {
+ let value = this.wrapFunction(prop, signalImpls[prop]);
+ let id = GObject.signal_lookup(prop.replace('_', '-'), this);
+ if (id != 0) {
+ GObject.signal_override_class_closure(id, this, function() {
+ let argArray = Array.prototype.slice.call(arguments);
+ let emitter = argArray.shift();
+
+ value.apply(emitter, argArray);
+ });
}
}
}
diff --git a/test/js/testGObjectClass.js b/test/js/testGObjectClass.js
index 2b3efa3..c94bc12 100644
--- a/test/js/testGObjectClass.js
+++ b/test/js/testGObjectClass.js
@@ -107,12 +107,14 @@ const MyObject = new GObject.Class({
this.emit('run-last');
},
- on_run_last: function() {
- this._run_last_callback();
- },
+ SignalImpls: {
+ run_last: function() {
+ this._run_last_callback();
+ },
- on_empty: function() {
- this.empty_called = true;
+ empty: function() {
+ this.empty_called = true;
+ }
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]