From 048debe8f9a99bfd5db44b48657c4e1bc28c3448 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 10 Jun 2020 11:26:31 +0200 Subject: Restrict QVariant::isNull() behavior isNull() would forward to the contained type and check that type's isNull() method for some of the builtin types. Remove that behavior and only return true in isNull(), if the variant is invalid, doesn't contain data or contains a null pointer. In addition, implement more consistent behavior when constructing a QVariant using the internal API taking a copy from a void *. isNull() should return true in both cases. This mainly changes behavior for some corner cases and when using our internal API. [ChangeLog][Important Behavior Changes] QVariant::isNull() no longer returns true when the variant contains an object of some type with an isNull() method, that returns true for the object; QVariant::isNull() now only returns true when the variant contains no object or a null pointer. Change-Id: I3125041c4f8f8618a04aa375aa0a56b19c02dcf5 Reviewed-by: Fabian Kosmale --- .../itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'tests/auto/corelib/itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp') diff --git a/tests/auto/corelib/itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp b/tests/auto/corelib/itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp index a5043b956a..8e8d1ec709 100644 --- a/tests/auto/corelib/itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp +++ b/tests/auto/corelib/itemmodels/qtransposeproxymodel/tst_qtransposeproxymodel.cpp @@ -442,7 +442,8 @@ void tst_QTransposeProxyModel::insertRowBase() const int oldColCount = proxy.columnCount(proxy.mapFromSource(parent)); QVERIFY(model->insertRow(1, parent)); QCOMPARE(proxy.columnCount(proxy.mapFromSource(parent)), oldColCount + 1); - QVERIFY(proxy.index(0, 1, proxy.mapFromSource(parent)).data().isNull()); + QVariant result = proxy.index(0, 1, proxy.mapFromSource(parent)).data(); + QVERIFY(result.isNull() || (result.metaType().id() == QMetaType::QString && result.toString().isNull())); QCOMPARE(columnsInsertSpy.count(), 1); QCOMPARE(columnsAboutToBeInsertSpy.count(), 1); for (const auto &spyArgs : {columnsInsertSpy.takeFirst(), @@ -540,8 +541,10 @@ void tst_QTransposeProxyModel::insertColumnProxy() QVERIFY(proxy.insertColumn(1, proxyParent)); QCOMPARE(proxy.columnCount(proxyParent), oldColCount + 1); QCOMPARE(model->rowCount(sourceParent), oldRowCount + 1); - QVERIFY(proxy.index(0, 1, proxyParent).data().isNull()); - QVERIFY(model->index(1, 0, sourceParent).data().isNull()); + QVariant result = proxy.index(0, 1, proxyParent).data(); + QVERIFY(result.isNull() || (result.metaType().id() == QMetaType::QString && result.toString().isNull())); + result = model->index(1, 0, sourceParent).data(); + QVERIFY(result.isNull() || (result.metaType().id() == QMetaType::QString && result.toString().isNull())); QCOMPARE(columnsInsertSpy.count(), 1); QCOMPARE(columnsAboutToBeInsertSpy.count(), 1); QCOMPARE(rowsInsertSpy.count(), 1); -- cgit v1.2.3