From 7468b13ab442131d07b57eb96fad7ec116f33d45 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Mon, 6 Sep 2021 16:39:47 +0200 Subject: QQuickGrid: Warn if there are more items than rows*columns Change-Id: I701d86079f2ddfb73b0470de97a2d1bff648166c Reviewed-by: Shawn Rutledge (cherry picked from commit a4a80db180540917e3077a2e22c71548f14fd8b6) Reviewed-by: Qt Cherry-pick Bot --- src/quick/items/qquickpositioners.cpp | 6 +++++- tests/auto/quick/qquickpositioners/tst_qquickpositioners.cpp | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/quick/items/qquickpositioners.cpp b/src/quick/items/qquickpositioners.cpp index a8d050527b..313143e881 100644 --- a/src/quick/items/qquickpositioners.cpp +++ b/src/quick/items/qquickpositioners.cpp @@ -1697,7 +1697,7 @@ void QQuickGrid::doPositioning(QSizeF *contentSize) QQuickBasePositionerPrivate *d = static_cast(QQuickBasePositionerPrivate::get(this)); int c = m_columns; int r = m_rows; - int numVisible = positionedItems.count(); + const int numVisible = positionedItems.count(); if (m_columns <= 0 && m_rows <= 0) { c = 4; @@ -1714,6 +1714,10 @@ void QQuickGrid::doPositioning(QSizeF *contentSize) return; //Nothing else to do } + if (numVisible > r * c) { + qmlWarning(this) << "Grid contains more visible items (" << numVisible << ") than rows*columns (" << r * c << ")"; + } + QList maxColWidth; QList maxRowHeight; int childIndex =0; diff --git a/tests/auto/quick/qquickpositioners/tst_qquickpositioners.cpp b/tests/auto/quick/qquickpositioners/tst_qquickpositioners.cpp index 3885dd4a9a..1b8fc638c6 100644 --- a/tests/auto/quick/qquickpositioners/tst_qquickpositioners.cpp +++ b/tests/auto/quick/qquickpositioners/tst_qquickpositioners.cpp @@ -2986,7 +2986,9 @@ void tst_qquickpositioners::test_propertychanges() QCOMPARE(columnsSpy.count(),1); QCOMPARE(rowsSpy.count(),1); + QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*QML Grid: Grid contains more visible items \\(20\\) than rows\\*columns \\(6\\)")); grid->setColumns(2); + QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*QML Grid: Grid contains more visible items \\(20\\) than rows\\*columns \\(4\\)")); grid->setRows(2); QCOMPARE(columnsSpy.count(),2); QCOMPARE(rowsSpy.count(),2); -- cgit v1.2.3