[gjs: 1/3] signals: Add _signalHandlerIsConnected method
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs: 1/3] signals: Add _signalHandlerIsConnected method
- Date: Wed, 14 Nov 2018 16:09:58 +0000 (UTC)
commit b73d065f8ad22068d922214a364a2da4798e71dc
Author: Jason Hicks <jaszhix gmail com>
Date: Mon Nov 12 21:11:05 2018 -0600
signals: Add _signalHandlerIsConnected method
installed-tests/js/testSignals.js | 7 +++++++
modules/signals.js | 21 +++++++++++++++++++++
2 files changed, 28 insertions(+)
---
diff --git a/installed-tests/js/testSignals.js b/installed-tests/js/testSignals.js
index 58d35309..8a031b33 100644
--- a/installed-tests/js/testSignals.js
+++ b/installed-tests/js/testSignals.js
@@ -92,6 +92,13 @@ function testSignals(klass) {
expect(bonk).not.toHaveBeenCalled();
});
+ it('determines if a signal is connected on a JS object', function () {
+ let id = foo.connect('bar', bar);
+ expect(foo.signalHandlerIsConnected(id)).toEqual(true);
+ foo.disconnect(id);
+ expect(foo.signalHandlerIsConnected(id)).toEqual(false);
+ });
+
describe('with exception in signal handler', function () {
let bar2;
beforeEach(function () {
diff --git a/modules/signals.js b/modules/signals.js
index 6a1bae62..d08c7fd1 100644
--- a/modules/signals.js
+++ b/modules/signals.js
@@ -78,6 +78,25 @@ function _disconnect(id) {
throw new Error("No signal connection " + id + " found");
}
+function _signalHandlerIsConnected(id) {
+ if (!('_signalConnections' in this))
+ return false;
+
+ let i;
+ let length = this._signalConnections.length;
+ for (i = 0; i < length; ++i) {
+ let connection = this._signalConnections[i];
+ if (connection.id == id) {
+ if (connection.disconnected) {
+ return false;
+ }
+ return true;
+ }
+ }
+
+ return false;
+}
+
function _disconnectAll() {
if ('_signalConnections' in this) {
while (this._signalConnections.length > 0) {
@@ -154,6 +173,7 @@ function addSignalMethods(proto) {
_addSignalMethod(proto, "connect", _connect);
_addSignalMethod(proto, "disconnect", _disconnect);
_addSignalMethod(proto, "emit", _emit);
+ _addSignalMethod(proto, 'signalHandlerIsConnected', _signalHandlerIsConnected)
// this one is not in GObject, but useful
_addSignalMethod(proto, "disconnectAll", _disconnectAll);
}
@@ -163,5 +183,6 @@ var WithSignals = new Lang.Interface({
connect: _connect,
disconnect: _disconnect,
emit: _emit,
+ signalHandlerIsConnected: _signalHandlerIsConnected,
disconnectAll: _disconnectAll,
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]