diff options
author | Chris Adams <christopher.adams@nokia.com> | 2012-03-29 11:14:59 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-05 09:50:05 +0200 |
commit | 5f1b7bf39298dafdd07e576eec2a6a367e80b264 (patch) | |
tree | 4ecbeb5377c6ed19f7d2a1905c96a27fe72258bf /src | |
parent | 99fb61587da6b7e4707858d4188f0ccd24077504 (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.cpp | 10 |
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 } |