on xenial help sign in
Misc journal fixes

Don't init *modelIndex to INT_MAX Makes no sense since we're not doing any qMin and the calling function also accepts any index >= 0 as valid so in some cases it may end up wanting to create an index that doesn't exist Don't refill if height() < 0, that gives bad ranges for from/to and the code gets confused . Approved by PS Jenkins bot, Michał Karnicki.

commitd3c71aa01d39e8d235b255dd69c19c51078d9bf4 authorAlbert Astals <albert.astals@canonical.com> dateMon 20 Jan 2014, 12:05 (13 years ago) parent8c3fa90e88c204
5 files changed+71−11
plugins/DashViews/abstractdashview.cpp+1−1 plugins/DashViews/horizontaljournal.cpp+1 plugins/DashViews/verticaljournal.cpp+2−1 tests/plugins/DashViews/horizontaljournaltest.cpp+35−9 tests/plugins/DashViews/verticaljournaltest.cpp+32
plugins/DashViews/abstractdashview.cpp+1−1
@@ -194,7 +194,7 @@ void AbstractDashView::createDelegateModel()
194194
195195void AbstractDashView::refill()
196196{
197− if (!isComponentComplete()) {
197+ if (!isComponentComplete() || height() < 0) {
198198 return;
199199 }
200200
plugins/DashViews/horizontaljournal.cpp+1
@@ -173,6 +173,7 @@ void HorizontalJournal::cleanupExistingItems()
173173 m_visibleItems.clear();
174174 m_lastInRowIndexPosition.clear();
175175 m_firstVisibleIndex = -1;
176+ setImplicitHeightDirty();
176177}
177178
178179void HorizontalJournal::calculateImplicitHeight()
plugins/DashViews/verticaljournal.cpp+2−1
@@ -79,7 +79,7 @@ void VerticalJournal::findBottomModelIndexToAdd(int *modelIndex, qreal *yPos)
7979
8080void VerticalJournal::findTopModelIndexToAdd(int *modelIndex, qreal *yPos)
8181{
82− *modelIndex = INT_MAX;
82+ *modelIndex = 0;
8383 *yPos = std::numeric_limits<qreal>::lowest();
8484 int columnToAddTo = -1;
8585
@@ -179,6 +179,7 @@ void VerticalJournal::cleanupExistingItems()
179179 column.clear();
180180 }
181181 m_indexColumnMap.clear();
182+ setImplicitHeightDirty();
182183}
183184
184185void VerticalJournal::calculateImplicitHeight()
tests/plugins/DashViews/horizontaljournaltest.cpp+35−9
@@ -126,9 +126,9 @@ private Q_SLOTS:
126126 view->engine()->addImportPath(BUILT_PLUGINS_DIR);
127127
128128 model = new WidthModel();
129− QStringList heightList;
130− heightList << "100" << "50" << "125" << "10" << "40" << "70" << "200" << "110" << "160" << "20" << "20" << "65" << "80" << "200" << "300" << "130" << "400" << "300" << "500" << "10";
131− model->setStringList(heightList);
129+ QStringList widthList;
130+ widthList << "100" << "50" << "125" << "10" << "40" << "70" << "200" << "110" << "160" << "20" << "20" << "65" << "80" << "200" << "300" << "130" << "400" << "300" << "500" << "10";
131+ model->setStringList(widthList);
132132
133133 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/horizontaljournaltest.qml"));
134134
@@ -336,9 +336,9 @@ private Q_SLOTS:
336336
337337 void testModelReset()
338338 {
339− QStringList heightList;
340− heightList << "100" << "50" << "125" << "25" << "50" << "50";
341− model->setStringList(heightList);
339+ QStringList widthList;
340+ widthList << "100" << "50" << "125" << "25" << "50" << "50";
341+ model->setStringList(widthList);
342342
343343 QTRY_COMPARE(hj->m_firstVisibleIndex, 0);
344344 QTRY_COMPARE(hj->m_visibleItems.count(), 6);
@@ -386,9 +386,9 @@ private Q_SLOTS:
386386 void testModelAppendRemoveLast()
387387 {
388388 WidthModel *model2 = new WidthModel();
389− QStringList heightList;
390− heightList << "100" << "50" << "125" << "25" << "50" << "50";
391− model2->setStringList(heightList);
389+ QStringList widthList;
390+ widthList << "100" << "50" << "125" << "25" << "50" << "50";
391+ model2->setStringList(widthList);
392392 hj->setModel(model2);
393393 delete model;
394394 model = model2;
@@ -454,6 +454,32 @@ private Q_SLOTS:
454454 QCOMPARE(hj->implicitHeight(), 310.);
455455 }
456456
457+ void testNegativeHeight()
458+ {
459+ QQuickItemPrivate::get(hj)->anchors()->resetFill();
460+ hj->setHeight(-8);
461+
462+ QStringList widthList;
463+ widthList << "100" << "50" << "125" << "25" << "50" << "50";
464+ model->setStringList(widthList);
465+
466+ QTRY_COMPARE(hj->m_visibleItems.count(), 0);
467+ QTRY_COMPARE(hj->implicitHeight(), 0.);
468+ }
469+
470+ void testNegativeDelegateCreationRange()
471+ {
472+ hj->setDelegateCreationBegin(0);
473+ hj->setDelegateCreationEnd(-100);
474+
475+ QStringList widthList;
476+ widthList << "100" << "50" << "50" << "30";
477+ model->setStringList(widthList);
478+
479+ QTRY_COMPARE(hj->m_visibleItems.count(), 0);
480+ QTRY_COMPARE(hj->implicitHeight(), 0.);
481+ }
482+
457483private:
458484 QQuickView *view;
459485 HorizontalJournal *hj;
tests/plugins/DashViews/verticaljournaltest.cpp+32
@@ -459,6 +459,38 @@ private Q_SLOTS:
459459 verifyItem(vj->m_columnVisibleItems[1][2], 7, 160, 120, true);
460460 }
461461
462+ void testNegativeHeight()
463+ {
464+ QQuickItemPrivate::get(vj)->anchors()->resetFill();
465+ vj->setHeight(-8);
466+
467+ QStringList heightList;
468+ heightList << "100" << "50" << "50" << "30";
469+ model->setStringList(heightList);
470+
471+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
472+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 0);
473+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 0);
474+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 0);
475+ QTRY_COMPARE(vj->implicitHeight(), 0.);
476+ }
477+
478+ void testNegativeDelegateCreationRange()
479+ {
480+ vj->setDelegateCreationBegin(0);
481+ vj->setDelegateCreationEnd(-100);
482+
483+ QStringList heightList;
484+ heightList << "100" << "50" << "50" << "30";
485+ model->setStringList(heightList);
486+
487+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
488+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 0);
489+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 0);
490+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 0);
491+ QTRY_COMPARE(vj->implicitHeight(), 0.);
492+ }
493+
462494private:
463495 QQuickView *view;
464496 VerticalJournal *vj;