diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-25 01:00:25 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-11-25 11:30:04 +0100 |
commit | 58c69df4d38324644bc49ec5f42ee8343a454b2d (patch) | |
tree | de0a1ce603292dcaff134d4e1e8ab064295515a2 /tests/auto/widgets | |
parent | 03b1d2c44940322208c12c7bceee376b51d8e852 (diff) | |
parent | 59a705e3710b0ba93bb698e3223241cfac932948 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
src/corelib/tools/qhash.h
src/gui/kernel/qevent.h
src/widgets/kernel/qshortcut.cpp
src/widgets/kernel/qshortcut.h
Change-Id: If61c206ee43ad1d97f5b07f58ac93c4583ce5620
Diffstat (limited to 'tests/auto/widgets')
14 files changed, 179 insertions, 19 deletions
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp index f910b12cc6..7398cc103e 100644 --- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -1030,15 +1030,13 @@ void tst_QFileSystemModel::dirsBeforeFiles() // Wait for model to be notified by the file system watcher QTRY_COMPARE(model->rowCount(root), 2 * itemCount); - // ensure that no file occurs before a directory - for (int i = 0; i < model->rowCount(root); ++i) { + // Ensure that no file occurs before any directory: + for (int i = 1; i < model->rowCount(root); ++i) { #ifndef Q_OS_MAC - QVERIFY(i == 0 || - !(model->fileInfo(model->index(i - 1, 0, root)).isFile() + QVERIFY(!(model->fileInfo(model->index(i - 1, 0, root)).isFile() && model->fileInfo(model->index(i, 0, root)).isDir())); #else - QVERIFY(i == 0 || - model->fileInfo(model->index(i - 1, 0, root)).fileName() < + QVERIFY(model->fileInfo(model->index(i - 1, 0, root)).fileName() < model->fileInfo(model->index(i, 0, root)).fileName()); #endif } @@ -1048,7 +1046,7 @@ void tst_QFileSystemModel::roleNames_data() { QTest::addColumn<int>("role"); QTest::addColumn<QByteArray>("roleName"); - QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration"); + QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon"); QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display"); QTest::newRow("fileIcon") << int(QFileSystemModel::FileIconRole) << QByteArray("fileIcon"); QTest::newRow("filePath") << int(QFileSystemModel::FilePathRole) << QByteArray("filePath"); @@ -1065,8 +1063,8 @@ void tst_QFileSystemModel::roleNames() QVERIFY(roles.contains(role)); QFETCH(QByteArray, roleName); - QList<QByteArray> values = roles.values(role); - QVERIFY(values.contains(roleName)); + QCOMPARE(roles.values(role).count(), 1); + QCOMPARE(roles.value(role), roleName); } static inline QByteArray permissionRowName(bool readOnly, int permission) diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp index 83bb4dc08f..f5358ceb93 100644 --- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp +++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp @@ -228,6 +228,7 @@ void tst_QFontDialog::qtbug_41513_stylesheetStyle() // The fontdialog sets the styleName, when the fontdatabase knows the style name. resultFont.setStyleName(testFont.styleName()); + testFont.setFamilies(QStringList(testFont.family())); QCOMPARE(resultFont, testFont); // reset stylesheet diff --git a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index ad17c2a557..5a9ba5c9d3 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -340,7 +340,7 @@ void tst_QGraphicsGridLayout::qgraphicsgridlayout() layout.setColumnStretchFactor(0, 0); layout.setGeometry(QRectF()); layout.setHorizontalSpacing(0); - layout.setRowAlignment(0, 0); + layout.setRowAlignment(0, { }); layout.setRowFixedHeight(0, 0); layout.setRowMaximumHeight(0, 0); layout.setRowMinimumHeight(0, 0); diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp index 0fb95b9f34..953791818e 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp @@ -1914,7 +1914,7 @@ void tst_QGraphicsItem::acceptedMouseButtons() event.setScenePos(QPointF(0, 0)); QCoreApplication::sendEvent(&scene, &event); QCOMPARE(scene.mouseGrabberItem(), item2); - item2->setAcceptedMouseButtons(nullptr); + item2->setAcceptedMouseButtons({ }); QCOMPARE(scene.mouseGrabberItem(), nullptr); QCoreApplication::sendEvent(&scene, &event); QCOMPARE(scene.mouseGrabberItem(), item1); @@ -8071,7 +8071,7 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption() void tst_QGraphicsItem::itemSendsGeometryChanges() { ItemChangeTester item; - item.setFlags(nullptr); + item.setFlags({ }); item.clear(); QTransform x = QTransform().rotate(45); diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp index d3477be986..c42e74ddbd 100644 --- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp @@ -174,7 +174,7 @@ private slots: // Subclass that exposes the protected functions. class SubQGraphicsWidget : public QGraphicsWidget { public: - SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = 0) + SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = { }) : QGraphicsWidget(parent, windowFlags), eventCount(0) { } @@ -254,7 +254,7 @@ protected: class SizeHinter : public QGraphicsWidget { public: - SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0, + SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = { }, const QSizeF &min = QSizeF(5,5), const QSizeF &pref = QSizeF(50, 50), const QSizeF &max = QSizeF(500, 500)) @@ -2580,7 +2580,7 @@ void tst_QGraphicsWidget::shortcutsDeletion() class MessUpPainterWidget : public QGraphicsWidget { public: - MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0) + MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = { }) : QGraphicsWidget(parent, wFlags) {} diff --git a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp index 5097f2e356..546b2ab3a8 100644 --- a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp +++ b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp @@ -697,7 +697,7 @@ void tst_QDirModel::roleNames_data() { QTest::addColumn<int>("role"); QTest::addColumn<QByteArray>("roleName"); - QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration"); + QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon"); QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display"); QTest::newRow("fileIcon") << int(QDirModel::FileIconRole) << QByteArray("fileIcon"); QTest::newRow("filePath") << int(QDirModel::FilePathRole) << QByteArray("filePath"); @@ -713,8 +713,8 @@ void tst_QDirModel::roleNames() QVERIFY(roles.contains(role)); QFETCH(QByteArray, roleName); - QList<QByteArray> values = roles.values(role); - QVERIFY(values.contains(roleName)); + QCOMPARE(roles.values(role).count(), 1); + QCOMPARE(roles.value(role), roleName); } diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp index cb083fdcbe..dcb932de66 100644 --- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp @@ -1512,6 +1512,20 @@ void tst_QListWidget::itemData() QCOMPARE(flags.count(), 6); for (int i = 0; i < 4; ++i) QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1)); + + item.setBackground(QBrush(Qt::red)); + item.setForeground(QBrush(Qt::red)); + item.setSizeHint(QSize(10, 10)); + QCOMPARE(item.data(Qt::BackgroundRole), QVariant(QBrush(Qt::red))); + QCOMPARE(item.data(Qt::ForegroundRole), QVariant(QBrush(Qt::red))); + QCOMPARE(item.data(Qt::SizeHintRole), QVariant(QSize(10, 10))); + // an empty brush should result in a QVariant() + item.setBackground(QBrush()); + item.setForeground(QBrush()); + item.setSizeHint(QSize()); + QCOMPARE(item.data(Qt::BackgroundRole), QVariant()); + QCOMPARE(item.data(Qt::ForegroundRole), QVariant()); + QCOMPARE(item.data(Qt::SizeHintRole), QVariant()); } void tst_QListWidget::changeDataWithSorting() diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp index f640996690..38dae7743f 100644 --- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp +++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp @@ -1404,9 +1404,17 @@ void tst_QTableWidget::setItemData() QCOMPARE(table.currentRoles, QVector<int>({Qt::DisplayRole, Qt::EditRole, Qt::ToolTipRole})); QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("Display")); + QCOMPARE(table.model()->data(idx, Qt::EditRole).toString(), QLatin1String("Display")); QCOMPARE(table.model()->data(idx, Qt::ToolTipRole).toString(), QLatin1String("ToolTip")); QCOMPARE(dataChangedSpy.count(), 1); - QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.takeFirst().at(0))); + QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(0))); + QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(1))); + const auto roles = qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2)); + QCOMPARE(roles.size(), 3); + QVERIFY(roles.contains(Qt::DisplayRole)); + QVERIFY(roles.contains(Qt::EditRole)); + QVERIFY(roles.contains(Qt::ToolTipRole)); + dataChangedSpy.clear(); table.model()->setItemData(idx, data); QCOMPARE(dataChangedSpy.count(), 0); @@ -1416,6 +1424,21 @@ void tst_QTableWidget::setItemData() table.model()->setItemData(idx, data); QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("dizplaye")); QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(QVector<int>({Qt::DisplayRole, Qt::EditRole}), qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2))); + + item->setBackground(QBrush(Qt::red)); + item->setForeground(QBrush(Qt::green)); + item->setSizeHint(QSize(10, 10)); + QCOMPARE(item->data(Qt::BackgroundRole), QVariant(QBrush(Qt::red))); + QCOMPARE(item->data(Qt::ForegroundRole), QVariant(QBrush(Qt::green))); + QCOMPARE(item->data(Qt::SizeHintRole), QVariant(QSize(10, 10))); + // an empty brush should result in a QVariant() + item->setBackground(QBrush()); + item->setForeground(QBrush()); + item->setSizeHint(QSize()); + QCOMPARE(item->data(Qt::BackgroundRole), QVariant()); + QCOMPARE(item->data(Qt::ForegroundRole), QVariant()); + QCOMPARE(item->data(Qt::SizeHintRole), QVariant()); } void tst_QTableWidget::cellWidget() diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp index dcffe8043b..9750a31824 100644 --- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp @@ -2868,6 +2868,7 @@ public: }; Node *root; + bool crash = false; EvilModel(QObject *parent = nullptr): QAbstractItemModel(parent), root(new Node) {} @@ -2876,6 +2877,11 @@ public: delete root; } + void setCrash() + { + crash = true; + } + void change() { emit layoutAboutToBeChanged(); @@ -2944,6 +2950,10 @@ public: QVariant data(const QModelIndex &idx, int role) const override { + if (crash) { + QTest::qFail("Should not get here...", __FILE__, __LINE__); + return QVariant(); + } if (idx.isValid() && role == Qt::DisplayRole) { Node *parentNode = root; if (idx.isValid()) { @@ -2963,6 +2973,7 @@ void tst_QTreeView::evilModel_data() { QTest::addColumn<bool>("visible"); QTest::newRow("visible") << false; + QTest::newRow("visible") << true; } void tst_QTreeView::evilModel() @@ -3132,6 +3143,9 @@ void tst_QTreeView::evilModel() model.change(); view.setRootIndex(secondLevel); + + model.setCrash(); + view.setModel(nullptr); } void tst_QTreeView::indexRowSizeHint() diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp index 2118bb5a29..7da56ab797 100644 --- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp +++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp @@ -1994,6 +1994,20 @@ void tst_QTreeWidget::itemData() QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1)); flags = widget.model()->itemData(widget.model()->index(0, 1)); QCOMPARE(flags.count(), 0); + + item.setBackground(0, QBrush(Qt::red)); + item.setForeground(0, QBrush(Qt::green)); + item.setSizeHint(0, QSize(10, 10)); + QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant(QBrush(Qt::red))); + QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant(QBrush(Qt::green))); + QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant(QSize(10, 10))); + // an empty brush should result in a QVariant() + item.setBackground(0, QBrush()); + item.setForeground(0, QBrush()); + item.setSizeHint(0, QSize()); + QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant()); + QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant()); + QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant()); } void tst_QTreeWidget::enableDisable() diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp index 82ab9c9c3b..aa687cfc3c 100644 --- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp +++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp @@ -103,6 +103,7 @@ public slots: private slots: void cleanup(); + void pmf_connect(); void number_data(); void number(); void text_data(); @@ -203,6 +204,45 @@ void tst_QShortcut::cleanup() QVERIFY(QApplication::topLevelWidgets().size() <= 1); // The data driven tests keep a widget around } +void tst_QShortcut::pmf_connect() +{ + class MyObject : public QObject + { + public: + using QObject::QObject; + void onActivated() { ++activated; } + void onAmbiguous() { ++ambiguous; } + void reset() { activated = 0; ambiguous = 0; } + int activated = 0; + int ambiguous = 0; + } myObject; + QWidget parent; + + auto runCheck = [&myObject](QShortcut *sc, int activated, int ambiguous) + { + myObject.reset(); + sc->activated(); + sc->activatedAmbiguously(); + delete sc; + QCOMPARE(myObject.activated, activated); + QCOMPARE(myObject.ambiguous, ambiguous); + }; + + runCheck(new QShortcut(QKeySequence(), &parent, + [&myObject]() { ++myObject.activated; }), + 1, 0); + runCheck(new QShortcut(QKeySequence(), &parent, + &myObject, &MyObject::onActivated), + 1, 0); + runCheck(new QShortcut(QKeySequence(), &parent, + &myObject, &MyObject::onActivated, &MyObject::onAmbiguous), + 1, 1); + runCheck(new QShortcut(QKeySequence(), &parent, &myObject, + &MyObject::onActivated, &myObject, &MyObject::onAmbiguous), + 1, 1); +} + + Qt::KeyboardModifiers tst_QShortcut::toButtons( int key ) { Qt::KeyboardModifiers result = Qt::NoModifier; diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index c29d1bbe04..3f2b8bca13 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -401,6 +401,7 @@ private slots: void tabletTracking(); void closeEvent(); + void closeWithChildWindow(); private: bool ensureScreenSize(int width, int height); @@ -11173,5 +11174,27 @@ void tst_QWidget::closeEvent() QCOMPARE(widget.closeCount, 1); } +void tst_QWidget::closeWithChildWindow() +{ + QWidget widget; + auto childWidget = new QWidget(&widget); + childWidget->setAttribute(Qt::WA_NativeWindow); + childWidget->windowHandle()->create(); + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + widget.windowHandle()->close(); + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + // Check that the child window inside the window is now visible + QVERIFY(childWidget->isVisible()); + + // Now explicitly hide the childWidget + childWidget->hide(); + widget.windowHandle()->close(); + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + QVERIFY(!childWidget->isVisible()); +} + QTEST_MAIN(tst_QWidget) #include "tst_qwidget.moc" diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index eed4fe3539..cab13092cb 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -397,6 +397,31 @@ void tst_QComboBox::getSetCheck() QCOMPARE(4, obj1.currentIndex()); // Valid obj1.setCurrentIndex(INT_MAX); QCOMPARE(-1, obj1.currentIndex()); // Invalid => -1 + + obj1.setIconSize(QSize(64, 32)); + QCOMPARE(obj1.iconSize(), QSize(64, 32)); + obj1.setIconSize(QSize()); + const int iconWidth = obj1.style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, &obj1); + QCOMPARE(obj1.iconSize(), QSize(iconWidth, iconWidth)); + + const QString placeholderText("Please select"); + obj1.setCurrentIndex(1); + obj1.setPlaceholderText(placeholderText); + QCOMPARE(obj1.placeholderText(), placeholderText); + QCOMPARE(obj1.currentText(), "2"); + QCOMPARE(obj1.currentIndex(), 1); + obj1.setPlaceholderText(QString()); // should not change anything + QCOMPARE(obj1.placeholderText(), QString()); + QCOMPARE(obj1.currentText(), "2"); + + obj1.clear(); + obj1.setPlaceholderText(placeholderText); + obj1.addItems({"1", "2", "3", "4", "5"}); + QCOMPARE(obj1.currentText(), placeholderText); + QCOMPARE(obj1.currentIndex(), -1); + obj1.setPlaceholderText(QString()); // should not change anything + QCOMPARE(obj1.currentText(), "1"); + QCOMPARE(obj1.currentIndex(), 0); } typedef QList<QVariant> VariantList; diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index a8b68c18ca..957b3dfb47 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -772,6 +772,14 @@ void tst_QLineEdit::keypress_inputMask_data() } { QTestEventList keys; + // inserting at end + addKeySequenceStandardKey(keys, QKeySequence::MoveToEndOfLine); + keys.addKeyClick(Qt::Key_Left); + keys.addKeyClick(Qt::Key_0); + QTest::newRow("insert at end") << QString("9-9-9") << keys << QString("--0") << QString(" - -0"); + } + { + QTestEventList keys; // inserting '12.12' then two backspaces addKeySequenceStandardKey(keys, QKeySequence::MoveToStartOfLine); keys.addKeyClick(Qt::Key_1); |