summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2009-11-19 05:06:49 (GMT)
committerBea Lam <bea.lam@nokia.com>2009-11-19 05:06:49 (GMT)
commitf9ee74e207f8604d0d94c5e83e50ae12492930c1 (patch)
tree11edcfd3ca1c84feb264039b526c0d3a520568c4 /src/declarative
parenta7493235a70f9e60d5d25d84b0782ee0a2e5c5fd (diff)
parent3e78ae2e6ec8df4b69845c936f6d4f6d43c15acc (diff)
downloadQt-f9ee74e207f8604d0d94c5e83e50ae12492930c1.zip
Qt-f9ee74e207f8604d0d94c5e83e50ae12492930c1.tar.gz
Qt-f9ee74e207f8604d0d94c5e83e50ae12492930c1.tar.bz2
Merge branch 'kinetic-declarativeui' of scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsborderimage.cpp7
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsflickable.cpp12
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsflickable_p.h3
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsgridview.cpp21
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsimagebase.cpp21
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsrectangle_p_p.h32
-rw-r--r--src/declarative/graphicsitems/qmlgraphicswebview.cpp29
-rw-r--r--src/declarative/graphicsitems/qmlgraphicswebview_p.h7
-rw-r--r--src/declarative/qml/qmlengine.cpp2
-rw-r--r--src/declarative/util/qmlanimation_p_p.h32
-rw-r--r--src/declarative/util/qmlbind.cpp14
-rw-r--r--src/declarative/util/qmlbind_p.h7
-rw-r--r--src/declarative/util/qmlpackage.cpp2
-rw-r--r--src/declarative/util/qmlpixmapcache.cpp17
-rw-r--r--src/declarative/util/qmlpixmapcache_p.h2
-rw-r--r--src/declarative/util/qmlstate.cpp3
-rw-r--r--src/declarative/util/qmlstategroup.cpp9
-rw-r--r--src/declarative/util/qmlstategroup_p.h1
-rw-r--r--src/declarative/util/qmltransitionmanager.cpp6
19 files changed, 148 insertions, 79 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp
index d7627ac..6f953bc 100644
--- a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp
@@ -176,12 +176,10 @@ void QmlGraphicsBorderImage::setSource(const QUrl &url)
if (url.isEmpty()) {
d->pix = QPixmap();
d->status = Null;
- d->progress = 1.0;
setImplicitWidth(0);
setImplicitHeight(0);
emit statusChanged(d->status);
emit sourceChanged(d->url);
- emit progressChanged(1.0);
update();
} else {
d->status = Loading;
@@ -219,7 +217,7 @@ void QmlGraphicsBorderImage::setSource(const QUrl &url)
d->progress = 1.0;
emit statusChanged(d->status);
emit sourceChanged(d->url);
- emit progressChanged(1.0);
+ emit progressChanged(d->progress);
update();
}
}
@@ -395,7 +393,8 @@ void QmlGraphicsBorderImage::paint(QPainter *p, const QStyleOptionGraphicsItem *
if (d->smooth)
p->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, d->smooth);
- QMargins margins(border()->top(), border()->left(), border()->bottom(), border()->right());
+ const QmlGraphicsScaleGrid *border = d->getScaleGrid();
+ QMargins margins(border->top(), border->left(), border->bottom(), border->right());
QTileRules rules((Qt::TileRule)d->horizontalTileMode, (Qt::TileRule)d->verticalTileMode);
qDrawBorderPixmap(p, QRect(0, 0, (int)d->width, (int)d->height), margins, d->pix, d->pix.rect(), margins, rules);
if (d->smooth) {
diff --git a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp
index ea9c173..b3a34ed 100644
--- a/src/declarative/graphicsitems/qmlgraphicsflickable.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsflickable.cpp
@@ -568,18 +568,6 @@ QmlGraphicsItem *QmlGraphicsFlickable::viewport()
return d->viewport;
}
-qreal QmlGraphicsFlickable::visibleX() const
-{
- Q_D(const QmlGraphicsFlickable);
- return -d->_moveX.value();
-}
-
-qreal QmlGraphicsFlickable::visibleY() const
-{
- Q_D(const QmlGraphicsFlickable);
- return -d->_moveY.value();
-}
-
QmlGraphicsFlickableVisibleArea *QmlGraphicsFlickable::visibleArea()
{
Q_D(QmlGraphicsFlickable);
diff --git a/src/declarative/graphicsitems/qmlgraphicsflickable_p.h b/src/declarative/graphicsitems/qmlgraphicsflickable_p.h
index 10447f6..50248e1 100644
--- a/src/declarative/graphicsitems/qmlgraphicsflickable_p.h
+++ b/src/declarative/graphicsitems/qmlgraphicsflickable_p.h
@@ -159,9 +159,6 @@ protected:
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
void timerEvent(QTimerEvent *event);
- qreal visibleX() const;
- qreal visibleY() const;
-
QmlGraphicsFlickableVisibleArea *visibleArea();
protected Q_SLOTS:
diff --git a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
index 473f9e5..7e2d983 100644
--- a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
@@ -1302,12 +1302,21 @@ void QmlGraphicsGridView::trackedPositionChanged()
if (!d->trackedItem)
return;
if (!isFlicking() && !d->moving && d->moveReason != QmlGraphicsGridViewPrivate::Mouse) {
- if (d->trackedItem->rowPos() < d->position()) {
- d->setPosition(d->trackedItem->rowPos());
- } else if (d->trackedItem->endRowPos() > d->position() + d->size()) {
- qreal pos = d->trackedItem->endRowPos() - d->size();
- if (d->rowSize() > d->size())
- pos = d->trackedItem->rowPos();
+ const qreal viewPos = d->position();
+ if (d->trackedItem->rowPos() < viewPos && d->currentItem->rowPos() < viewPos) {
+ d->setPosition(d->currentItem->rowPos() < d->trackedItem->rowPos() ? d->trackedItem->rowPos() : d->currentItem->rowPos());
+ } else if (d->trackedItem->endRowPos() > viewPos + d->size()
+ && d->currentItem->endRowPos() > viewPos + d->size()) {
+ qreal pos;
+ if (d->trackedItem->endRowPos() < d->currentItem->endRowPos()) {
+ pos = d->trackedItem->endRowPos() - d->size();
+ if (d->rowSize() > d->size())
+ pos = d->trackedItem->rowPos();
+ } else {
+ pos = d->currentItem->endRowPos() - d->size();
+ if (d->rowSize() > d->size())
+ pos = d->currentItem->rowPos();
+ }
d->setPosition(pos);
}
}
diff --git a/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp b/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp
index 0b57540..3e86a7c 100644
--- a/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp
@@ -108,16 +108,15 @@ void QmlGraphicsImageBase::setSource(const QUrl &url)
if (url.isEmpty()) {
d->pix = QPixmap();
d->status = Null;
- d->progress = 1.0;
setImplicitWidth(0);
setImplicitHeight(0);
emit statusChanged(d->status);
emit sourceChanged(d->url);
- emit progressChanged(1.0);
update();
} else {
d->status = Loading;
- QNetworkReply *reply = QmlPixmapCache::get(qmlEngine(this), d->url, &d->pix);
+ bool ok = true;
+ QNetworkReply *reply = QmlPixmapCache::get(qmlEngine(this), d->url, &d->pix, &ok);
if (reply) {
d->pendingPixmapCache = true;
connect(reply, SIGNAL(finished()), this, SLOT(requestFinished()));
@@ -125,15 +124,19 @@ void QmlGraphicsImageBase::setSource(const QUrl &url)
this, SLOT(requestProgress(qint64,qint64)));
} else {
//### should be unified with requestFinished
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
-
- if (d->status == Loading)
- d->status = Ready;
+ if (ok) {
+ setImplicitWidth(d->pix.width());
+ setImplicitHeight(d->pix.height());
+
+ if (d->status == Loading)
+ d->status = Ready;
+ } else {
+ d->status = Error;
+ }
d->progress = 1.0;
emit statusChanged(d->status);
emit sourceChanged(d->url);
- emit progressChanged(1.0);
+ emit progressChanged(d->progress);
update();
}
}
diff --git a/src/declarative/graphicsitems/qmlgraphicsrectangle_p_p.h b/src/declarative/graphicsitems/qmlgraphicsrectangle_p_p.h
index cb914d6..c4bbbe4 100644
--- a/src/declarative/graphicsitems/qmlgraphicsrectangle_p_p.h
+++ b/src/declarative/graphicsitems/qmlgraphicsrectangle_p_p.h
@@ -1,7 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** contained in the Technology Preview License Agreement accompanying
+** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/declarative/graphicsitems/qmlgraphicswebview.cpp b/src/declarative/graphicsitems/qmlgraphicswebview.cpp
index da6c00d..e165e59 100644
--- a/src/declarative/graphicsitems/qmlgraphicswebview.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicswebview.cpp
@@ -1192,6 +1192,35 @@ QmlGraphicsWebPage::~QmlGraphicsWebPage()
{
}
+void QmlGraphicsWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID)
+{
+ qWarning() << sourceID << ":" << lineNumber << ":" << message;
+}
+
+QString QmlGraphicsWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile)
+{
+ // Not supported (it's modal)
+ return oldFile;
+}
+
+void QmlGraphicsWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg)
+{
+ emit viewItem()->alert(msg);
+}
+
+bool QmlGraphicsWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg)
+{
+ // Not supported (it's modal)
+ return false;
+}
+
+bool QmlGraphicsWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result)
+{
+ // Not supported (it's modal)
+ return false;
+}
+
+
/*
Qt WebKit does not understand non-QWidget plugins, so dummy widgets
are created, parented to a single dummy tool window.
diff --git a/src/declarative/graphicsitems/qmlgraphicswebview_p.h b/src/declarative/graphicsitems/qmlgraphicswebview_p.h
index e2e4888..fa7d19d 100644
--- a/src/declarative/graphicsitems/qmlgraphicswebview_p.h
+++ b/src/declarative/graphicsitems/qmlgraphicswebview_p.h
@@ -69,6 +69,11 @@ public:
protected:
QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList &paramNames, const QStringList &paramValues);
QWebPage *createWindow(WebWindowType type);
+ void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID);
+ QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);
+ void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg);
+ bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg);
+ bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result);
private:
QmlGraphicsWebView *viewItem();
@@ -195,6 +200,8 @@ Q_SIGNALS:
void zoomTo(qreal zoom, int centerX, int centerY);
+ void alert(const QString& message);
+
public Q_SLOTS:
QVariant evaluateJavaScript(const QString&);
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 86472de..e292e5c 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -99,7 +99,7 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(qmlImportTrace, QML_IMPORT_TRACE)
-QML_DEFINE_TYPE(Qt,4,6,Object,QObject)
+QML_DEFINE_TYPE(Qt,4,6,QtObject,QObject)
struct StaticQtMetaObject : public QObject
{
diff --git a/src/declarative/util/qmlanimation_p_p.h b/src/declarative/util/qmlanimation_p_p.h
index 27c0cd7..cb1c642 100644
--- a/src/declarative/util/qmlanimation_p_p.h
+++ b/src/declarative/util/qmlanimation_p_p.h
@@ -1,7 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Qt Software Information (qt-info@nokia.com)
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** contained in the Technology Preview License Agreement accompanying
+** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/declarative/util/qmlbind.cpp b/src/declarative/util/qmlbind.cpp
index b8ab53e..2f692d8 100644
--- a/src/declarative/util/qmlbind.cpp
+++ b/src/declarative/util/qmlbind.cpp
@@ -55,9 +55,10 @@ QT_BEGIN_NAMESPACE
class QmlBindPrivate : public QObjectPrivate
{
public:
- QmlBindPrivate() : when(true), obj(0) {}
+ QmlBindPrivate() : when(true), componentComplete(false), obj(0) {}
- bool when;
+ bool when : 1;
+ bool componentComplete : 1;
QObject *obj;
QString prop;
QmlNullableValue<QVariant> value;
@@ -176,10 +177,17 @@ void QmlBind::setValue(const QVariant &v)
eval();
}
+void QmlBind::componentComplete()
+{
+ Q_D(QmlBind);
+ d->componentComplete = true;
+ eval();
+}
+
void QmlBind::eval()
{
Q_D(QmlBind);
- if (!d->obj || d->value.isNull || !d->when)
+ if (!d->obj || d->value.isNull || !d->when || !d->componentComplete)
return;
QmlMetaProperty prop(d->obj, d->prop);
diff --git a/src/declarative/util/qmlbind_p.h b/src/declarative/util/qmlbind_p.h
index a9b7b98..4d85698 100644
--- a/src/declarative/util/qmlbind_p.h
+++ b/src/declarative/util/qmlbind_p.h
@@ -52,11 +52,11 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QmlBindPrivate;
-class Q_DECLARATIVE_EXPORT QmlBind : public QObject
+class Q_DECLARATIVE_EXPORT QmlBind : public QObject, public QmlParserStatus
{
Q_OBJECT
Q_DECLARE_PRIVATE(QmlBind)
-
+ Q_INTERFACES(QmlParserStatus)
Q_PROPERTY(QObject *target READ object WRITE setObject)
Q_PROPERTY(QString property READ property WRITE setProperty)
Q_PROPERTY(QVariant value READ value WRITE setValue)
@@ -78,6 +78,9 @@ public:
QVariant value() const;
void setValue(const QVariant &);
+protected:
+ virtual void componentComplete();
+
private:
void eval();
};
diff --git a/src/declarative/util/qmlpackage.cpp b/src/declarative/util/qmlpackage.cpp
index 908b368..6bc1ef9 100644
--- a/src/declarative/util/qmlpackage.cpp
+++ b/src/declarative/util/qmlpackage.cpp
@@ -101,7 +101,7 @@ QmlPackage::~QmlPackage()
Q_D(QmlPackage);
for (int ii = 0; ii < d->dataList.count(); ++ii) {
QObject *obj = d->dataList.at(ii);
- delete obj;
+ obj->setParent(this);
}
}
diff --git a/src/declarative/util/qmlpixmapcache.cpp b/src/declarative/util/qmlpixmapcache.cpp
index ba7895a..b8a9bd7 100644
--- a/src/declarative/util/qmlpixmapcache.cpp
+++ b/src/declarative/util/qmlpixmapcache.cpp
@@ -213,23 +213,34 @@ bool QmlPixmapCache::find(const QUrl& url, QPixmap *pixmap)
The returned QNetworkReply will be deleted when all get() calls are
matched by a corresponding find() call.
+
+ If the \a ok parameter is passed and \a url is a local file,
+ its value will be set to false if the pixmap could not be loaded;
+ otherwise the pixmap was loaded and *ok will be true.
*/
-QNetworkReply *QmlPixmapCache::get(QmlEngine *engine, const QUrl& url, QPixmap *pixmap)
+QNetworkReply *QmlPixmapCache::get(QmlEngine *engine, const QUrl& url, QPixmap *pixmap, bool *ok)
{
#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML
QString lf = toLocalFileOrQrc(url);
if (!lf.isEmpty()) {
QString key = url.toString();
if (!QPixmapCache::find(key,pixmap)) {
+ bool loaded = true;
QFile f(lf);
if (f.open(QIODevice::ReadOnly)) {
if (!readImage(&f, pixmap)) {
qWarning() << "Format error loading" << url;
*pixmap = QPixmap();
+ loaded = false;
}
- } else
+ } else {
+ qWarning() << "Cannot open" << url;
*pixmap = QPixmap();
- QPixmapCache::insert(key, *pixmap);
+ loaded = false;
+ }
+ if (loaded)
+ QPixmapCache::insert(key, *pixmap);
+ if (ok) *ok = loaded;
}
return 0;
}
diff --git a/src/declarative/util/qmlpixmapcache_p.h b/src/declarative/util/qmlpixmapcache_p.h
index e6ed452..d2e272c 100644
--- a/src/declarative/util/qmlpixmapcache_p.h
+++ b/src/declarative/util/qmlpixmapcache_p.h
@@ -56,7 +56,7 @@ class QNetworkReply;
class Q_DECLARATIVE_EXPORT QmlPixmapCache
{
public:
- static QNetworkReply *get(QmlEngine *, const QUrl& url, QPixmap *pixmap);
+ static QNetworkReply *get(QmlEngine *, const QUrl& url, QPixmap *pixmap, bool *ok=0);
static void cancelGet(const QUrl& url, QObject* obj);
static bool find(const QUrl& url, QPixmap *pixmap); // url must have been passed to QmlPixmapCache::get, and any returned reply finished.
diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp
index c05c539..5fde89a 100644
--- a/src/declarative/util/qmlstate.cpp
+++ b/src/declarative/util/qmlstate.cpp
@@ -161,6 +161,9 @@ QmlState::QmlState(QObject *parent)
QmlState::~QmlState()
{
+ Q_D(QmlState);
+ if (d->group)
+ d->group->removeState(this);
}
/*!
diff --git a/src/declarative/util/qmlstategroup.cpp b/src/declarative/util/qmlstategroup.cpp
index 506ab82..d6ce191 100644
--- a/src/declarative/util/qmlstategroup.cpp
+++ b/src/declarative/util/qmlstategroup.cpp
@@ -119,6 +119,9 @@ QmlStateGroup::QmlStateGroup(QObject *parent)
QmlStateGroup::~QmlStateGroup()
{
+ Q_D(const QmlStateGroup);
+ for (int i = 0; i < d->states.count(); ++i)
+ d->states.at(i)->setStateGroup(0);
}
QList<QmlState *> QmlStateGroup::states() const
@@ -380,4 +383,10 @@ QmlState *QmlStateGroup::findState(const QString &name) const
return 0;
}
+void QmlStateGroup::removeState(QmlState *state)
+{
+ Q_D(QmlStateGroup);
+ d->states.removeOne(state);
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/util/qmlstategroup_p.h b/src/declarative/util/qmlstategroup_p.h
index f4c6d86..ddd27d7 100644
--- a/src/declarative/util/qmlstategroup_p.h
+++ b/src/declarative/util/qmlstategroup_p.h
@@ -83,6 +83,7 @@ Q_SIGNALS:
private:
friend class QmlState;
void updateAutoState();
+ void removeState(QmlState *state);
};
QT_END_NAMESPACE
diff --git a/src/declarative/util/qmltransitionmanager.cpp b/src/declarative/util/qmltransitionmanager.cpp
index d1db9ec..ba726db 100644
--- a/src/declarative/util/qmltransitionmanager.cpp
+++ b/src/declarative/util/qmltransitionmanager.cpp
@@ -236,8 +236,11 @@ void QmlTransitionManager::transition(const QList<Action> &list,
action.property.write(action.toValue);
}
}
- if (!transition)
+ if (!transition) {
d->applyBindings();
+ if (d->state)
+ static_cast<QmlStatePrivate*>(QObjectPrivate::get(d->state))->complete();
+ }
}
void QmlTransitionManager::cancel()
@@ -262,7 +265,6 @@ void QmlTransitionManager::cancel()
}
d->bindingsList.clear();
d->completeList.clear();
-
}
QT_END_NAMESPACE