diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2016-07-15 21:24:23 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2016-07-15 21:24:23 +0200 |
commit | 3836fd7d12777fc53836a72d6542d2fbf2f20ac9 (patch) | |
tree | ffd8a3d1c82fea142d7b50fb42111ceb1fbc2e1a /src/webchannel/qwebchannel.js | |
parent | b84f22a3249aa1af46b17e33ac030abb077251bf (diff) | |
parent | e35346cf70598c47a456946327927643910aa277 (diff) | |
download | qtwebchannel-3836fd7d12777fc53836a72d6542d2fbf2f20ac9.tar.gz |
Merge remote-tracking branch 'origin/5.6' into 5.7
Alleged Conflicts:
examples/webchannel/chatclient-html/doc/src/chatclient-html.qdoc
examples/webchannel/chatclient-qml/doc/src/chatclient-qml.qdoc
examples/webchannel/chatserver-cpp/doc/src/chatserver-cpp.qdoc
In each case, the two sides agreed byte-for-byte.
Not quite sure what git thought the conflict was !
Change-Id: I5da9695b667f4112848c520b630ab1304d61cea3
Diffstat (limited to 'src/webchannel/qwebchannel.js')
-rw-r--r-- | src/webchannel/qwebchannel.js | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/webchannel/qwebchannel.js b/src/webchannel/qwebchannel.js index d39e301..5b047c2 100644 --- a/src/webchannel/qwebchannel.js +++ b/src/webchannel/qwebchannel.js @@ -319,7 +319,7 @@ function QObject(name, data, webChannel) this.signalEmitted = function(signalName, signalArgs) { - invokeSignalCallbacks(signalName, signalArgs); + invokeSignalCallbacks(signalName, this.unwrapQObject(signalArgs)); } function addMethod(methodData) @@ -330,10 +330,15 @@ function QObject(name, data, webChannel) var args = []; var callback; for (var i = 0; i < arguments.length; ++i) { - if (typeof arguments[i] === "function") - callback = arguments[i]; + var argument = arguments[i]; + if (typeof argument === "function") + callback = argument; + else if (argument instanceof QObject && webChannel.objects[argument.__id__] !== undefined) + args.push({ + "id": argument.__id__ + }); else - args.push(arguments[i]); + args.push(argument); } webChannel.exec({ @@ -387,11 +392,14 @@ function QObject(name, data, webChannel) return; } object.__propertyCache__[propertyIndex] = value; + var valueToSend = value; + if (valueToSend instanceof QObject && webChannel.objects[valueToSend.__id__] !== undefined) + valueToSend = { "id": valueToSend.__id__ }; webChannel.exec({ "type": QWebChannelMessageTypes.setProperty, "object": object.__id__, "property": propertyIndex, - "value": value + "value": valueToSend }); } }); |