aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2011-08-02 13:58:49 +1000
committerQt by Nokia <qt-info@nokia.com>2011-08-02 08:50:21 +0200
commit94b44b19edbb501d4cbe7519fb7202ead81746cc (patch)
treeb9bd8b0f3a998ce1e7557685eaa9feb574c6660e
parent1b65161042108ee46ca42331dacc2b66b63c6b4e (diff)
Views with no delegate crash when items are inserted.
Check that we have a valid VisualModel before reacting to model changes. Change-Id: I6107e8fb8942a3625e501ab549a337f1affd4fbd Fixes: QTBUG-20640 Reviewed-on: http://codereview.qt.nokia.com/2481 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Bea Lam <bea.lam@nokia.com>
-rw-r--r--src/declarative/items/qsggridview.cpp6
-rw-r--r--src/declarative/items/qsglistview.cpp6
-rw-r--r--src/qtquick1/graphicsitems/qdeclarativegridview.cpp6
-rw-r--r--src/qtquick1/graphicsitems/qdeclarativelistview.cpp6
4 files changed, 12 insertions, 12 deletions
diff --git a/src/declarative/items/qsggridview.cpp b/src/declarative/items/qsggridview.cpp
index ec22761406..ac86ebbb7f 100644
--- a/src/declarative/items/qsggridview.cpp
+++ b/src/declarative/items/qsggridview.cpp
@@ -1280,7 +1280,7 @@ void QSGGridView::moveCurrentIndexRight()
void QSGGridView::itemsInserted(int modelIndex, int count)
{
Q_D(QSGGridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
int index = d->visibleItems.count() ? d->mapFromModel(modelIndex) : 0;
@@ -1411,7 +1411,7 @@ void QSGGridView::itemsInserted(int modelIndex, int count)
void QSGGridView::itemsRemoved(int modelIndex, int count)
{
Q_D(QSGGridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->itemCount -= count;
@@ -1493,7 +1493,7 @@ void QSGGridView::itemsRemoved(int modelIndex, int count)
void QSGGridView::itemsMoved(int from, int to, int count)
{
Q_D(QSGGridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->isValid())
return;
d->updateUnrequestedIndexes();
diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp
index 15042bea91..d9792d1770 100644
--- a/src/declarative/items/qsglistview.cpp
+++ b/src/declarative/items/qsglistview.cpp
@@ -1578,7 +1578,7 @@ void QSGListView::updateSections()
void QSGListView::itemsInserted(int modelIndex, int count)
{
Q_D(QSGListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->updateUnrequestedIndexes();
d->moveReason = QSGListViewPrivate::Other;
@@ -1718,7 +1718,7 @@ void QSGListView::itemsInserted(int modelIndex, int count)
void QSGListView::itemsRemoved(int modelIndex, int count)
{
Q_D(QSGListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->moveReason = QSGListViewPrivate::Other;
d->updateUnrequestedIndexes();
@@ -1815,7 +1815,7 @@ void QSGListView::itemsRemoved(int modelIndex, int count)
void QSGListView::itemsMoved(int from, int to, int count)
{
Q_D(QSGListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->isValid())
return;
d->updateUnrequestedIndexes();
diff --git a/src/qtquick1/graphicsitems/qdeclarativegridview.cpp b/src/qtquick1/graphicsitems/qdeclarativegridview.cpp
index 63b907b022..3375afff51 100644
--- a/src/qtquick1/graphicsitems/qdeclarativegridview.cpp
+++ b/src/qtquick1/graphicsitems/qdeclarativegridview.cpp
@@ -2748,7 +2748,7 @@ void QDeclarative1GridView::trackedPositionChanged()
void QDeclarative1GridView::itemsInserted(int modelIndex, int count)
{
Q_D(QDeclarative1GridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
int index = d->visibleItems.count() ? d->mapFromModel(modelIndex) : 0;
@@ -2879,7 +2879,7 @@ void QDeclarative1GridView::itemsInserted(int modelIndex, int count)
void QDeclarative1GridView::itemsRemoved(int modelIndex, int count)
{
Q_D(QDeclarative1GridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->itemCount -= count;
@@ -2979,7 +2979,7 @@ void QDeclarative1GridView::destroyRemoved()
void QDeclarative1GridView::itemsMoved(int from, int to, int count)
{
Q_D(QDeclarative1GridView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->isValid())
return;
QHash<int,FxGridItem1*> moved;
diff --git a/src/qtquick1/graphicsitems/qdeclarativelistview.cpp b/src/qtquick1/graphicsitems/qdeclarativelistview.cpp
index c58543c735..0474591bba 100644
--- a/src/qtquick1/graphicsitems/qdeclarativelistview.cpp
+++ b/src/qtquick1/graphicsitems/qdeclarativelistview.cpp
@@ -3195,7 +3195,7 @@ void QDeclarative1ListView::trackedPositionChanged()
void QDeclarative1ListView::itemsInserted(int modelIndex, int count)
{
Q_D(QDeclarative1ListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->updateUnrequestedIndexes();
d->moveReason = QDeclarative1ListViewPrivate::Other;
@@ -3338,7 +3338,7 @@ void QDeclarative1ListView::itemsInserted(int modelIndex, int count)
void QDeclarative1ListView::itemsRemoved(int modelIndex, int count)
{
Q_D(QDeclarative1ListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->model || !d->model->isValid())
return;
d->moveReason = QDeclarative1ListViewPrivate::Other;
d->updateUnrequestedIndexes();
@@ -3453,7 +3453,7 @@ void QDeclarative1ListView::destroyRemoved()
void QDeclarative1ListView::itemsMoved(int from, int to, int count)
{
Q_D(QDeclarative1ListView);
- if (!isComponentComplete())
+ if (!isComponentComplete() || !d->isValid())
return;
d->updateUnrequestedIndexes();