aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris Adams <christopher.adams@nokia.com>2012-03-29 11:14:59 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-05 09:50:05 +0200
commit5f1b7bf39298dafdd07e576eec2a6a367e80b264 (patch)
tree4ecbeb5377c6ed19f7d2a1905c96a27fe72258bf /src
parent99fb61587da6b7e4707858d4188f0ccd24077504 (diff)
Fix erroneous signal emission in Loader
Previously, the incubator wasn't cleared when a Loader was deactivated. This commit clears it on deactivate, and also ensures that the loadedSignal isn't emitted on error. Finally, it re-enables a network-loading-related unit test. Change-Id: I5dac92aead2c221c5d45011accf59077f7c9b402 Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickloader.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp
index 730dfd45d4..864e03bf43 100644
--- a/src/quick/items/qquickloader.cpp
+++ b/src/quick/items/qquickloader.cpp
@@ -309,6 +309,13 @@ void QQuickLoader::setActive(bool newVal)
loadFromSourceComponent();
}
} else {
+ // cancel any current incubation
+ if (d->incubator) {
+ d->incubator->clear();
+ delete d->itemContext;
+ d->itemContext = 0;
+ }
+
if (d->item) {
QQuickItemPrivate *p = QQuickItemPrivate::get(d->item);
p->removeItemChangeListener(d, watchedChanges);
@@ -642,7 +649,8 @@ void QQuickLoaderPrivate::incubatorStateChanged(QQmlIncubator::Status status)
emit q->sourceComponentChanged();
emit q->statusChanged();
emit q->progressChanged();
- emit q->loaded();
+ if (status == QQmlIncubator::Ready)
+ emit q->loaded();
disposeInitialPropertyValues(); // cleanup
}