summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-11-18 05:53:08 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-11-18 05:53:08 (GMT)
commitf93cc8dda10c7f6a7a408d818ecafda23150e20c (patch)
treeb4adb77d857f8c4f61ae86ff55599b737f68a526
parenteaa5d6d945b5bcab2cbdce01a0780ccdadbd2719 (diff)
downloadQt-f93cc8dda10c7f6a7a408d818ecafda23150e20c.zip
Qt-f93cc8dda10c7f6a7a408d818ecafda23150e20c.tar.gz
Qt-f93cc8dda10c7f6a7a408d818ecafda23150e20c.tar.bz2
ListView tests and fixes.
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsgridview.cpp1
-rw-r--r--src/declarative/graphicsitems/qmlgraphicslistview.cpp10
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp7
-rw-r--r--tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp9
4 files changed, 22 insertions, 5 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
index 5ce2836..473f9e5 100644
--- a/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsgridview.cpp
@@ -950,7 +950,6 @@ void QmlGraphicsGridView::setHighlight(QmlComponent *highlight)
{
Q_D(QmlGraphicsGridView);
if (highlight != d->highlightComponent) {
- delete d->highlightComponent;
d->highlightComponent = highlight;
d->updateCurrent(d->currentIndex);
}
diff --git a/src/declarative/graphicsitems/qmlgraphicslistview.cpp b/src/declarative/graphicsitems/qmlgraphicslistview.cpp
index a166df2..c6291f2 100644
--- a/src/declarative/graphicsitems/qmlgraphicslistview.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicslistview.cpp
@@ -503,7 +503,7 @@ void QmlGraphicsListViewPrivate::refill(qreal from, qreal to)
return;
from -= buffer;
to += buffer;
- int modelIndex = 0;
+ int modelIndex = visibleIndex;
qreal itemEnd = visiblePos-1;
if (!visibleItems.isEmpty()) {
visiblePos = visibleItems.first()->position();
@@ -1169,6 +1169,9 @@ void QmlGraphicsListView::setDelegate(QmlComponent *delegate)
if (QmlGraphicsVisualDataModel *dataModel = qobject_cast<QmlGraphicsVisualDataModel*>(d->model)) {
dataModel->setDelegate(delegate);
if (isComponentComplete()) {
+ for (int i = 0; i < d->visibleItems.count(); ++i)
+ d->releaseItem(d->visibleItems.at(i));
+ d->visibleItems.clear();
refill();
d->moveReason = QmlGraphicsListViewPrivate::SetIndex;
d->updateCurrent(d->currentIndex);
@@ -1268,9 +1271,10 @@ void QmlGraphicsListView::setHighlight(QmlComponent *highlight)
{
Q_D(QmlGraphicsListView);
if (highlight != d->highlightComponent) {
- delete d->highlightComponent;
d->highlightComponent = highlight;
- d->updateCurrent(d->currentIndex);
+ d->createHighlight();
+ if (d->currentItem)
+ d->updateHighlight();
}
}
diff --git a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp
index cf5fc5e..e8ee196 100644
--- a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp
@@ -692,11 +692,16 @@ QmlComponent *QmlGraphicsVisualDataModel::delegate() const
void QmlGraphicsVisualDataModel::setDelegate(QmlComponent *delegate)
{
Q_D(QmlGraphicsVisualDataModel);
+ bool wasValid = d->m_delegate != 0;
d->m_delegate = delegate;
- if (d->modelCount()) {
+ if (!wasValid && d->modelCount() && d->m_delegate) {
emit itemsInserted(0, d->modelCount());
emit countChanged();
}
+ if (wasValid && !d->m_delegate && d->modelCount()) {
+ emit itemsRemoved(0, d->modelCount());
+ emit countChanged();
+ }
}
QString QmlGraphicsVisualDataModel::part() const
diff --git a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
index 36f4dc5..e9f785b 100644
--- a/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
+++ b/tests/auto/declarative/qmlgraphicslistview/tst_qmlgraphicslistview.cpp
@@ -318,13 +318,22 @@ void tst_QmlGraphicsListView::items()
testObject->setAnimate(true);
QMetaObject::invokeMethod(canvas->root(), "checkProperties");
QVERIFY(testObject->error() == false);
+ QVERIFY(listview->currentItem());
// set invalid highlight
testObject->setInvalidHighlight(true);
QMetaObject::invokeMethod(canvas->root(), "checkProperties");
QVERIFY(testObject->error() == false);
+ QVERIFY(listview->currentItem());
QVERIFY(listview->highlightItem() == 0);
+ // back to normal highlight
+ testObject->setInvalidHighlight(false);
+ QMetaObject::invokeMethod(canvas->root(), "checkProperties");
+ QVERIFY(testObject->error() == false);
+ QVERIFY(listview->currentItem());
+ QVERIFY(listview->highlightItem() != 0);
+
// set an empty model and confirm that items are destroyed
T model2;
ctxt->setContextProperty("testModel", &model2);