summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2010-01-11 06:32:58 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2010-01-11 06:35:50 (GMT)
commit2ec9b259f63a7305cf221425049cd728adb84bf2 (patch)
tree4958d0c84e7bf1ff745f3cb1b6cd079ca9ac8f2e
parent8562344632efce66d58490344d557d5d217994d4 (diff)
downloadQt-2ec9b259f63a7305cf221425049cd728adb84bf2.zip
Qt-2ec9b259f63a7305cf221425049cd728adb84bf2.tar.gz
Qt-2ec9b259f63a7305cf221425049cd728adb84bf2.tar.bz2
Use QMetaObject::disconnectOne() in QML
QTBUG-6781
-rw-r--r--src/declarative/qml/qmlbindingvme.cpp4
-rw-r--r--src/declarative/qml/qmlexpression.cpp18
-rw-r--r--tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp9
3 files changed, 19 insertions, 12 deletions
diff --git a/src/declarative/qml/qmlbindingvme.cpp b/src/declarative/qml/qmlbindingvme.cpp
index b4b8dc1..29391a6 100644
--- a/src/declarative/qml/qmlbindingvme.cpp
+++ b/src/declarative/qml/qmlbindingvme.cpp
@@ -383,8 +383,8 @@ inline void subscribe(QObject *o, int notifyIndex,
QmlBindingVME::Config::Subscription *s = config->subscriptions + subIndex;
if (o != s->source || notifyIndex != s->notifyIndex) {
if (s->source)
- QMetaObject::disconnect(s->source, s->notifyIndex,
- config->target, config->targetSlot + subIndex);
+ QMetaObject::disconnectOne(s->source, s->notifyIndex,
+ config->target, config->targetSlot + subIndex);
s->source = o;
s->notifyIndex = notifyIndex;
if (s->source && s->notifyIndex != -1)
diff --git a/src/declarative/qml/qmlexpression.cpp b/src/declarative/qml/qmlexpression.cpp
index 1587d61..aefa0b1 100644
--- a/src/declarative/qml/qmlexpression.cpp
+++ b/src/declarative/qml/qmlexpression.cpp
@@ -641,9 +641,9 @@ void QmlExpressionPrivate::clearGuards()
for (int ii = 0; ii < data->guardListLength; ++ii) {
if (data->guardList[ii].data()) {
- QMetaObject::disconnect(data->guardList[ii].data(),
- data->guardList[ii].notifyIndex,
- q, notifyIdx);
+ QMetaObject::disconnectOne(data->guardList[ii].data(),
+ data->guardList[ii].notifyIndex,
+ q, notifyIdx);
}
}
@@ -684,9 +684,9 @@ void QmlExpressionPrivate::updateGuards(const QPODVector<QmlEnginePrivate::Captu
}
} else if(data->guardList[ii].data() && !data->guardList[ii].isDuplicate) {
// Cache miss
- QMetaObject::disconnect(data->guardList[ii].data(),
- data->guardList[ii].notifyIndex,
- q, notifyIdx);
+ QMetaObject::disconnectOne(data->guardList[ii].data(),
+ data->guardList[ii].notifyIndex,
+ q, notifyIdx);
}
/* else {
// Cache miss, but nothing to do
@@ -732,9 +732,9 @@ void QmlExpressionPrivate::updateGuards(const QPODVector<QmlEnginePrivate::Captu
for (int ii = properties.count(); ii < data->guardListLength; ++ii) {
if (data->guardList[ii].data() && !data->guardList[ii].isDuplicate) {
- QMetaObject::disconnect(data->guardList[ii].data(),
- data->guardList[ii].notifyIndex,
- q, notifyIdx);
+ QMetaObject::disconnectOne(data->guardList[ii].data(),
+ data->guardList[ii].notifyIndex,
+ q, notifyIdx);
}
}
diff --git a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
index a153296..3aa1aff 100644
--- a/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
+++ b/tests/auto/declarative/qmlecmascript/tst_qmlecmascript.cpp
@@ -216,6 +216,13 @@ void tst_qmlecmascript::methods()
QCOMPARE(object->property("test2").toInt(), 17);
QCOMPARE(object->property("test3").toInt(), 16);
}
+
+ {
+ QmlComponent component(&engine, TEST_FILE("methods.5.qml"));
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+ QCOMPARE(object->property("test").toInt(), 9);
+ }
}
void tst_qmlecmascript::bindingLoop()
@@ -1051,6 +1058,7 @@ void tst_qmlecmascript::compositePropertyType()
delete object;
}
+// QTBUG-6781
void tst_qmlecmascript::bug1()
{
QmlComponent component(&engine, TEST_FILE("bug.1.qml"));
@@ -1065,7 +1073,6 @@ void tst_qmlecmascript::bug1()
object->setProperty("b", true);
- QEXPECT_FAIL("", "QTBUG-6781", Continue);
QCOMPARE(object->property("test").toInt(), 9);
delete object;