diff options
Diffstat (limited to 'tests/auto/widgets/widgets')
41 files changed, 728 insertions, 146 deletions
diff --git a/tests/auto/widgets/widgets/qabstractbutton/qabstractbutton.pro b/tests/auto/widgets/widgets/qabstractbutton/qabstractbutton.pro index 2f0111f483..1d9074491e 100644 --- a/tests/auto/widgets/widgets/qabstractbutton/qabstractbutton.pro +++ b/tests/auto/widgets/widgets/qabstractbutton/qabstractbutton.pro @@ -1,6 +1,6 @@ CONFIG += testcase TARGET = tst_qabstractbutton -QT += widgets testlib +QT += widgets testlib gui-private SOURCES += tst_qabstractbutton.cpp diff --git a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp index e77faa1e75..eb108a40de 100644 --- a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp +++ b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp @@ -39,6 +39,9 @@ #include <qgridlayout.h> #include <qabstractbutton.h> +#include <private/qguiapplication_p.h> +#include <qpa/qplatformintegration.h> + class tst_QAbstractButton : public QObject { Q_OBJECT @@ -470,6 +473,9 @@ void tst_QAbstractButton::toggled() void tst_QAbstractButton::setShortcut() { + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("Window activation is not supported"); + QKeySequence seq( Qt::Key_A ); testWidget->setShortcut( seq ); QApplication::setActiveWindow(testWidget); diff --git a/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp index a17a9f6c33..01ecfb2ca9 100644 --- a/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp +++ b/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp @@ -356,7 +356,7 @@ void tst_QAbstractScrollArea::patternBackground() widget.resize(600, 600); scrollArea.setWidget(&widget); topLevel.show(); - QVERIFY(QTest::qWaitForWindowActive(&topLevel)); + QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); QLinearGradient linearGrad(QPointF(250, 250), QPointF(300, 300)); linearGrad.setColorAt(0, Qt::yellow); diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp index f77efe036a..c54a6bb73e 100644 --- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp @@ -1836,9 +1836,10 @@ void tst_QAbstractSlider::sliderPressedReleased() if (qApp->style()->styleHint(QStyle::SH_ScrollBar_LeftClickAbsolutePosition)) QSKIP("The result depends on system setting on mac"); - QTest::mousePress(slider, Qt::LeftButton, 0, QPoint(rect.center().x() + 2, rect.center().y() + 2)); + QTest::mousePress(slider, Qt::LeftButton, {}, + QPoint(rect.center().x() + 2, rect.center().y() + 2)); QCOMPARE(spy1.count(), expectedCount); - QTest::mouseRelease(slider, Qt::LeftButton, 0, rect.center()); + QTest::mouseRelease(slider, Qt::LeftButton, {}, rect.center()); QCOMPARE(spy2.count(), expectedCount); delete slider; diff --git a/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp b/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp index 0ce3b4cefe..6fb13ed55e 100644 --- a/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp +++ b/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp @@ -168,6 +168,9 @@ void tst_QAbstractSpinBox::task228728_cssselector() void tst_QAbstractSpinBox::inputMethodUpdate() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QSpinBox box; QSpinBox *testWidget = &box; diff --git a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp index 7684f16c47..279fe49e3a 100644 --- a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp +++ b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp @@ -58,6 +58,23 @@ protected: } }; +class TestPushButton : public QPushButton +{ +public: + TestPushButton(QWidget *parent = nullptr) + : QPushButton(parent) + {} + TestPushButton(const QString &title, QWidget *parent = nullptr) + : QPushButton(title, parent) + {} + +protected: + bool hitButton(const QPoint &pos) const override + { + return rect().contains(pos); + } +}; + #include <qbuttongroup.h> class tst_QButtonGroup : public QObject @@ -89,12 +106,15 @@ void tst_QButtonGroup::arrowKeyNavigation() if (!qt_tab_all_widgets()) QSKIP("This test requires full keyboard control to be enabled."); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QDialog dlg(0); QHBoxLayout layout(&dlg); QGroupBox g1("1", &dlg); QHBoxLayout g1layout(&g1); QRadioButton bt1("Radio1", &g1); - QPushButton pb("PB", &g1); + TestPushButton pb("PB", &g1); QLineEdit le(&g1); QRadioButton bt2("Radio2", &g1); g1layout.addWidget(&bt1); @@ -228,9 +248,9 @@ void tst_QButtonGroup::exclusive() { QDialog dlg(0); QHBoxLayout layout(&dlg); - QPushButton *pushButton1 = new QPushButton(&dlg); - QPushButton *pushButton2 = new QPushButton(&dlg); - QPushButton *pushButton3 = new QPushButton(&dlg); + TestPushButton *pushButton1 = new TestPushButton(&dlg); + TestPushButton *pushButton2 = new TestPushButton(&dlg); + TestPushButton *pushButton3 = new TestPushButton(&dlg); pushButton1->setCheckable(true); pushButton2->setCheckable(true); pushButton3->setCheckable(true); @@ -268,9 +288,9 @@ void tst_QButtonGroup::exclusive() void tst_QButtonGroup::testSignals() { QButtonGroup buttons; - QPushButton pb1; - QPushButton pb2; - QPushButton pb3; + TestPushButton pb1; + TestPushButton pb2; + TestPushButton pb3; buttons.addButton(&pb1); buttons.addButton(&pb2, 23); buttons.addButton(&pb3); @@ -387,9 +407,9 @@ void tst_QButtonGroup::checkedButton() { QButtonGroup buttons; buttons.setExclusive(false); - QPushButton pb1; + TestPushButton pb1; pb1.setCheckable(true); - QPushButton pb2; + TestPushButton pb2; pb2.setCheckable(true); buttons.addButton(&pb1); buttons.addButton(&pb2, 23); @@ -453,7 +473,7 @@ void tst_QButtonGroup::task209485_removeFromGroupInEventHandler() QFETCH(int, signalCount); qRegisterMetaType<QAbstractButton *>("QAbstractButton *"); - QPushButton *button = new QPushButton; + TestPushButton *button = new TestPushButton; QButtonGroup group; group.addButton(button); diff --git a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp index 312ec0b1ec..c3ae2ea541 100644 --- a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp +++ b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp @@ -156,6 +156,9 @@ void tst_QCalendarWidget::buttonClickCheck() #ifdef Q_OS_WINRT QSKIP("Fails on WinRT - QTBUG-68297"); #endif + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QCalendarWidget object; QSize size = object.sizeHint(); object.setGeometry(0,0,size.width(), size.height()); diff --git a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp index 0cbab5e17c..6dd4f8d2fe 100644 --- a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp +++ b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp @@ -78,6 +78,9 @@ private: void tst_QCheckBox::initTestCase() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + // Create the test class testWidget = new QCheckBox(0); testWidget->setObjectName("testObject"); diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index b7869a0653..3878e7ccb2 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; @@ -812,16 +837,16 @@ void tst_QComboBox::virtualAutocompletion() // well, and send a keypress & keyrelease right after each other. // This provokes the actual error, as there's no events in between to do // the text completion. - QKeyEvent kp1(QEvent::KeyPress, Qt::Key_B, 0, "b"); - QKeyEvent kr1(QEvent::KeyRelease, Qt::Key_B, 0, "b"); + QKeyEvent kp1(QEvent::KeyPress, Qt::Key_B, {}, "b"); + QKeyEvent kr1(QEvent::KeyRelease, Qt::Key_B, {}, "b"); QApplication::sendEvent(testWidget, &kp1); QApplication::sendEvent(testWidget, &kr1); qApp->processEvents(); // Process events to trigger autocompletion QTRY_COMPARE(testWidget->currentIndex(), 1); - QKeyEvent kp2(QEvent::KeyPress, Qt::Key_O, 0, "o"); - QKeyEvent kr2(QEvent::KeyRelease, Qt::Key_O, 0, "o"); + QKeyEvent kp2(QEvent::KeyPress, Qt::Key_O, {}, "o"); + QKeyEvent kr2(QEvent::KeyRelease, Qt::Key_O, {}, "o"); QApplication::sendEvent(testWidget, &kp2); QApplication::sendEvent(testWidget, &kr2); @@ -840,6 +865,9 @@ void tst_QComboBox::virtualAutocompletion() void tst_QComboBox::autoCompletionCaseSensitivity() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + //we have put the focus because the completer //is only used when the widget actually has the focus TestWidget topLevel; @@ -1694,7 +1722,7 @@ void tst_QComboBox::setCustomModelAndView() // why this happens. QTest::qWait(QApplication::doubleClickInterval()); - QTest::mouseClick(window->windowHandle(), Qt::LeftButton, 0, view->mapTo(window, subItemRect.center())); + QTest::mouseClick(window->windowHandle(), Qt::LeftButton, {}, view->mapTo(window, subItemRect.center())); #ifdef Q_OS_WINRT QEXPECT_FAIL("", "Fails on WinRT - QTBUG-68297", Abort); #endif @@ -1995,6 +2023,9 @@ void tst_QComboBox::flaggedItems_data() void tst_QComboBox::flaggedItems() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QStringList, itemList); QFETCH(IntList, deselectFlagList); QFETCH(IntList, disableFlagList); @@ -2465,6 +2496,9 @@ void tst_QComboBox::task247863_keyBoardSelection() void tst_QComboBox::task220195_keyBoardSelection2() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QComboBox combo; setFrameless(&combo); combo.move(200, 200); @@ -2722,10 +2756,7 @@ void tst_QComboBox::resetModel() class StringListModel : public QStringListModel { public: - StringListModel(const QStringList &list) : QStringListModel(list) - { - } - + using QStringListModel::QStringListModel; void reset() { QStringListModel::beginResetModel(); @@ -2733,8 +2764,8 @@ void tst_QComboBox::resetModel() } }; QComboBox cb; - StringListModel model( QStringList() << "1" << "2"); - QSignalSpy spy(&cb, SIGNAL(currentIndexChanged(int))); + StringListModel model({"1", "2"}); + QSignalSpy spy(&cb, QOverload<int>::of(&QComboBox::currentIndexChanged)); QCOMPARE(spy.count(), 0); QCOMPARE(cb.currentIndex(), -1); //no selection @@ -2745,12 +2776,15 @@ void tst_QComboBox::resetModel() model.reset(); QCOMPARE(spy.count(), 2); - QCOMPARE(cb.currentIndex(), -1); //no selection + QCOMPARE(cb.currentIndex(), 0); //first item selected } void tst_QComboBox::keyBoardNavigationWithMouse() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QComboBox combo; combo.setEditable(false); setFrameless(&combo); @@ -2798,6 +2832,9 @@ void tst_QComboBox::keyBoardNavigationWithMouse() void tst_QComboBox::task_QTBUG_1071_changingFocusEmitsActivated() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QWidget w; w.move(200, 200); QVBoxLayout layout(&w); @@ -3065,6 +3102,9 @@ void tst_QComboBox::itemData() void tst_QComboBox::task_QTBUG_31146_popupCompletion() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QComboBox comboBox; comboBox.setEditable(true); #if QT_DEPRECATED_SINCE(5, 13) @@ -3101,6 +3141,9 @@ void tst_QComboBox::task_QTBUG_31146_popupCompletion() void tst_QComboBox::task_QTBUG_41288_completerChangesCurrentIndex() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QComboBox comboBox; comboBox.setEditable(true); @@ -3352,6 +3395,9 @@ void tst_QComboBox::task_QTBUG_56693_itemFontFromModel() void tst_QComboBox::inputMethodUpdate() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + TestWidget topLevel; topLevel.show(); QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); @@ -3406,6 +3452,9 @@ void tst_QComboBox::inputMethodUpdate() void tst_QComboBox::task_QTBUG_52027_mapCompleterIndex() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QStringList words; words << "" << "foobar1" << "foobar2"; diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp index 2e5d24cd26..0044d33c66 100644 --- a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp +++ b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp @@ -110,6 +110,8 @@ void tst_QCommandLinkButton::initTestCase() testWidget->setObjectName("testWidget"); testWidget->resize( 200, 200 ); testWidget->show(); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); QVERIFY(QTest::qWaitForWindowActive(testWidget)); connect( testWidget, SIGNAL(clicked()), this, SLOT(onClicked()) ); diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index 26b4b7d020..264625777f 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -2303,7 +2303,7 @@ void tst_QDateTimeEdit::mousePress() QRect rectUp = testWidget->style()->subControlRect(QStyle::CC_SpinBox, &so, QStyle::SC_SpinBoxUp, testWidget); // Send mouseClick to center of SC_SpinBoxUp - QTest::mouseClick(testWidget, Qt::LeftButton, 0, rectUp.center()); + QTest::mouseClick(testWidget, Qt::LeftButton, {}, rectUp.center()); QCOMPARE(testWidget->date().year(), 2005); } @@ -2916,7 +2916,8 @@ void tst_QDateTimeEdit::calendarPopup() opt.editable = true; opt.subControls = QStyle::SC_ComboBoxArrow; QRect rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, testWidget); - QTest::mouseClick(testWidget, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); + QTest::mouseClick(testWidget, Qt::LeftButton, {}, + QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2)); QWidget *wid = testWidget->findChild<QWidget *>("qt_datetimedit_calendar"); QVERIFY(wid != 0); testWidget->hide(); @@ -2928,7 +2929,8 @@ void tst_QDateTimeEdit::calendarPopup() opt.initFrom(&timeEdit); opt.subControls = QStyle::SC_ComboBoxArrow; rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &timeEdit); - QTest::mouseClick(&timeEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); + QTest::mouseClick(&timeEdit, Qt::LeftButton, {}, + QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2)); QWidget *wid2 = timeEdit.findChild<QWidget *>("qt_datetimedit_calendar"); QVERIFY(!wid2); timeEdit.hide(); @@ -2942,7 +2944,8 @@ void tst_QDateTimeEdit::calendarPopup() opt.initFrom(&dateEdit); opt.subControls = QStyle::SC_ComboBoxArrow; rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &dateEdit); - QTest::mouseClick(&dateEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); + QTest::mouseClick(&dateEdit, Qt::LeftButton, {}, + QPoint(rect.left() + rect.width() / 2, rect.top() + rect.height() / 2)); QWidget *wid3 = dateEdit.findChild<QWidget *>("qt_datetimedit_calendar"); QVERIFY(!wid3); dateEdit.hide(); @@ -4097,6 +4100,9 @@ void tst_QDateTimeEdit::stepModifierKeys_data() void tst_QDateTimeEdit::stepModifierKeys() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QDate, startDate); QFETCH(int, stepModifier); QFETCH(QDateTimeEdit::Section, section); @@ -4198,6 +4204,9 @@ void tst_QDateTimeEdit::stepModifierButtons_data() void tst_QDateTimeEdit::stepModifierButtons() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QStyle::SubControl, subControl); QFETCH(int, stepModifier); QFETCH(Qt::KeyboardModifiers, modifiers); @@ -4285,6 +4294,9 @@ void tst_QDateTimeEdit::stepModifierPressAndHold_data() void tst_QDateTimeEdit::stepModifierPressAndHold() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QStyle::SubControl, subControl); QFETCH(int, stepModifier); QFETCH(Qt::KeyboardModifiers, modifiers); diff --git a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp index 7db3b44dc8..356f773ae9 100644 --- a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp +++ b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp @@ -98,7 +98,7 @@ void tst_QDial::sliderMoved() QPoint init(dial.width()/4, dial.height()/2); QMouseEvent pressevent(QEvent::MouseButtonPress, init, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); qApp->sendEvent(&dial, &pressevent); QSignalSpy sliderspy(&dial, SIGNAL(sliderMoved(int))); @@ -108,7 +108,7 @@ void tst_QDial::sliderMoved() { //move on top of the slider init = QPoint(dial.width()/2, dial.height()/4); QMouseEvent moveevent(QEvent::MouseMove, init, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); qApp->sendEvent(&dial, &moveevent); QCOMPARE( sliderspy.count(), 1); QCOMPARE( valuespy.count(), 0); @@ -118,14 +118,14 @@ void tst_QDial::sliderMoved() { //move on the right of the slider init = QPoint(dial.width()*3/4, dial.height()/2); QMouseEvent moveevent(QEvent::MouseMove, init, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); qApp->sendEvent(&dial, &moveevent); QCOMPARE( sliderspy.count(), 2); QCOMPARE( valuespy.count(), 0); } QMouseEvent releaseevent(QEvent::MouseButtonRelease, init, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); qApp->sendEvent(&dial, &releaseevent); QCOMPARE( valuespy.count(), 1); // valuechanged signal should be called at this point diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp index 17b0e9ce5f..6a2c8893d2 100644 --- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp +++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp @@ -163,7 +163,7 @@ void tst_QDialogButtonBox::testConstructor3_data() QTest::addColumn<QDialogButtonBox::StandardButtons>("buttons"); QTest::addColumn<int>("buttonCount"); - QTest::newRow("nothing") << int(Qt::Horizontal) << (QDialogButtonBox::StandardButtons)0 << 0; + QTest::newRow("nothing") << int(Qt::Horizontal) << QDialogButtonBox::StandardButtons{} << 0; QTest::newRow("only 1") << int(Qt::Horizontal) << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1; QTest::newRow("only 1.. twice") << int(Qt::Horizontal) << (QDialogButtonBox::Ok | QDialogButtonBox::Ok) @@ -199,7 +199,7 @@ void tst_QDialogButtonBox::testConstructor4_data() QTest::addColumn<QDialogButtonBox::StandardButtons>("buttons"); QTest::addColumn<int>("buttonCount"); - QTest::newRow("nothing") << (QDialogButtonBox::StandardButtons)0 << 0; + QTest::newRow("nothing") << QDialogButtonBox::StandardButtons{} << 0; QTest::newRow("only 1") << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1; QTest::newRow("only 1.. twice") << (QDialogButtonBox::Ok | QDialogButtonBox::Ok) @@ -828,6 +828,9 @@ void tst_QDialogButtonBox::testDefaultButton() void tst_QDialogButtonBox::task191642_default() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QDialog dlg; QPushButton *def = new QPushButton(&dlg); QSignalSpy clicked(def, SIGNAL(clicked(bool))); diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp index 625116654d..9a16c39014 100644 --- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp +++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp @@ -946,6 +946,9 @@ void tst_QDockWidget::task248604_infiniteResize() void tst_QDockWidget::task258459_visibilityChanged() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow win; QDockWidget dock1, dock2; win.addDockWidget(Qt::RightDockWidgetArea, &dock1); diff --git a/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp b/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp index c760d9cc99..c293a4bdd2 100644 --- a/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp +++ b/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp @@ -256,6 +256,10 @@ void tst_QDoubleSpinBox::initTestCase() testFocusWidget = new QWidget(0); testFocusWidget->resize(200, 100); testFocusWidget->show(); + + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QVERIFY(QTest::qWaitForWindowActive(testFocusWidget)); } diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp index 5392d36ae0..bd3ea5686a 100644 --- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp +++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp @@ -35,6 +35,8 @@ class tst_QFontComboBox : public QObject Q_OBJECT private slots: + void initTestCase(); + void qfontcombobox_data(); void qfontcombobox(); void currentFont_data(); @@ -58,6 +60,12 @@ public: { return SubQFontComboBox::event(e); } }; +void tst_QFontComboBox::initTestCase() +{ + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This freezes. Figure out why."); +} + void tst_QFontComboBox::qfontcombobox_data() { } diff --git a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp index 05f9cd2e4a..0ca8dc0776 100644 --- a/tests/auto/widgets/widgets/qframe/tst_qframe.cpp +++ b/tests/auto/widgets/widgets/qframe/tst_qframe.cpp @@ -159,6 +159,9 @@ void tst_QFrame::testPainting_data() void tst_QFrame::testPainting() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QString, basename); QFETCH(int, lineWidth); QFETCH(int, midLineWidth); diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp index 1b477fbbd0..4fb5d262ca 100644 --- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp +++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp @@ -387,7 +387,7 @@ void tst_QGroupBox::clicked() QStyle::SubControl(areaToHit), &testWidget); if (rect.isValid()) - QTest::mouseClick(&testWidget, Qt::LeftButton, 0, rect.center()); + QTest::mouseClick(&testWidget, Qt::LeftButton, {}, rect.center()); else QTest::mouseClick(&testWidget, Qt::LeftButton); @@ -420,7 +420,7 @@ void tst_QGroupBox::toggledVsClicked() QRect rect = groupBox.style()->subControlRect(QStyle::CC_GroupBox, &option, QStyle::SC_GroupBoxCheckBox, &groupBox); - QTest::mouseClick(&groupBox, Qt::LeftButton, 0, rect.center()); + QTest::mouseClick(&groupBox, Qt::LeftButton, {}, rect.center()); QCOMPARE(clickSpy.count(), 1); QCOMPARE(toggleSpy.count(), 2); QVERIFY(toggleTimeStamp < clickTimeStamp); @@ -474,6 +474,9 @@ void tst_QGroupBox::childrenAreDisabled() void tst_QGroupBox::propagateFocus() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QGroupBox box; QLineEdit lineEdit(&box); box.show(); @@ -497,11 +500,11 @@ void tst_QGroupBox::task_QTBUG_19170_ignoreMouseReleaseEvent() QRect rect = box.style()->subControlRect(QStyle::CC_GroupBox, &option, QStyle::SC_GroupBoxCheckBox, &box); - QTest::mouseClick(&box, Qt::LeftButton, 0, rect.center()); + QTest::mouseClick(&box, Qt::LeftButton, {}, rect.center()); QCOMPARE(box.isChecked(), true); box.setChecked(false); - QTest::mouseRelease(&box, Qt::LeftButton, 0, rect.center()); + QTest::mouseRelease(&box, Qt::LeftButton, {}, rect.center()); QCOMPARE(box.isChecked(), false); } @@ -555,19 +558,19 @@ void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents() // Without a checkbox, all mouse events should propagate parent.reset(); - QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QTest::mousePress(&box, Qt::LeftButton, {}, checkBoxRect.center()); QCOMPARE(parent.mousePressed, true); parent.reset(); - QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center()); + QTest::mousePress(&box, Qt::LeftButton, {}, box.rect().center()); QCOMPARE(parent.mousePressed, true); parent.reset(); - QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QTest::mouseRelease(&box, Qt::LeftButton, {}, checkBoxRect.center()); QCOMPARE(parent.mouseReleased, true); parent.reset(); - QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center()); + QTest::mouseRelease(&box, Qt::LeftButton, {}, box.rect().center()); QCOMPARE(parent.mouseReleased, true); parent.reset(); @@ -583,19 +586,19 @@ void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents() box.setCheckable(true); parent.reset(); - QTest::mousePress(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QTest::mousePress(&box, Qt::LeftButton, {}, checkBoxRect.center()); QCOMPARE(parent.mousePressed, false); parent.reset(); - QTest::mousePress(&box, Qt::LeftButton, 0, box.rect().center()); + QTest::mousePress(&box, Qt::LeftButton, {}, box.rect().center()); QCOMPARE(parent.mousePressed, true); parent.reset(); - QTest::mouseRelease(&box, Qt::LeftButton, 0, checkBoxRect.center()); + QTest::mouseRelease(&box, Qt::LeftButton, {}, checkBoxRect.center()); QCOMPARE(parent.mouseReleased, false); parent.reset(); - QTest::mouseRelease(&box, Qt::LeftButton, 0, box.rect().center()); + QTest::mouseRelease(&box, Qt::LeftButton, {}, box.rect().center()); QCOMPARE(parent.mouseReleased, true); parent.reset(); diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index d37fb5c173..6408df3f11 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -77,24 +77,22 @@ using namespace QTestPrivate; class StyleOptionTestStyle : public QCommonStyle { -private: - bool readOnly; - public: - inline StyleOptionTestStyle() : QCommonStyle(), readOnly(false) - { - } + bool readOnly = false; + mutable bool wasDrawn = false; - inline void setReadOnly(bool readOnly) + using QCommonStyle::QCommonStyle; + void setReadOnly(bool readOnly) { this->readOnly = readOnly; } - inline void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *, - const QWidget *) const + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *, + const QWidget *) const override { switch (pe) { case PE_PanelLineEdit: + wasDrawn = true; if (readOnly) QVERIFY(opt->state & QStyle::State_ReadOnly); else @@ -316,8 +314,8 @@ protected slots: private: // keyClicks(..) is moved to QtTestCase - void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = 0); - void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = 0); + void psKeyClick(QWidget *target, Qt::Key key, Qt::KeyboardModifiers pressState = {}); + void psKeyClick(QTestEventList &keys, Qt::Key key, Qt::KeyboardModifiers pressState = {}); bool unselectingWithLeftOrRightChangesCursorPosition(); void addKeySequenceStandardKey(QTestEventList &keys, QKeySequence::StandardKey); QLineEdit *ensureTestWidget(); @@ -875,9 +873,6 @@ void tst_QLineEdit::hasAcceptableInputMask() qApp->sendEvent(testWidget, &lostFocus); QVERIFY(validInput); - // at the moment we don't strip the blank character if it is valid input, this makes the test between x vs X useless - QEXPECT_FAIL( "Any optional and required", "To eat blanks or not? Known issue. Task 43172", Abort); - // test requiredMask testWidget->setInputMask(requiredMask); validInput = true; @@ -1498,6 +1493,9 @@ void tst_QLineEdit::undo_keypressevents() #ifndef QT_NO_CLIPBOARD void tst_QLineEdit::QTBUG5786_undoPaste() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + if (!PlatformClipboard::isAvailable()) QSKIP("this machine doesn't support the clipboard"); QString initial("initial"); @@ -1708,6 +1706,9 @@ void tst_QLineEdit::displayText() void tst_QLineEdit::passwordEchoOnEdit() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QStyleOptionFrame opt; QLineEdit *testWidget = ensureTestWidget(); QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); @@ -1742,6 +1743,9 @@ void tst_QLineEdit::passwordEchoOnEdit() void tst_QLineEdit::passwordEchoDelay() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); int delay = qGuiApp->styleHints()->passwordMaskDelay(); #if defined QT_BUILD_INTERNAL @@ -1925,6 +1929,9 @@ public: void tst_QLineEdit::noCursorBlinkWhenReadOnly() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + int cursorFlashTime = QApplication::cursorFlashTime(); if (cursorFlashTime == 0) return; @@ -2268,7 +2275,7 @@ void tst_QLineEdit::deleteSelectedText() edit.selectAll(); - QTest::keyClick(&edit, Qt::Key_Delete, 0); + QTest::keyClick(&edit, Qt::Key_Delete, {}); QVERIFY(edit.text().isEmpty()); edit.setText(text); @@ -3022,6 +3029,9 @@ void tst_QLineEdit::setSelection() #ifndef QT_NO_CLIPBOARD void tst_QLineEdit::cut() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + if (!PlatformClipboard::isAvailable()) QSKIP("Autotests run from cron and pasteboard don't get along quite ATM"); @@ -3087,6 +3097,9 @@ void tst_QLineEdit::cut() void tst_QLineEdit::cutWithoutSelection() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + enum { selectionLength = 1 }; if (QKeySequence(QKeySequence::Cut).toString() != QLatin1String("Ctrl+X")) @@ -3253,19 +3266,22 @@ void tst_QLineEdit::readOnlyStyleOption() QLineEdit *testWidget = ensureTestWidget(); bool wasReadOnly = testWidget->isReadOnly(); QStyle *oldStyle = testWidget->style(); + testWidget->show(); + QTRY_VERIFY(QTest::qWaitForWindowExposed(testWidget)); StyleOptionTestStyle myStyle; testWidget->setStyle(&myStyle); myStyle.setReadOnly(true); testWidget->setReadOnly(true); - testWidget->repaint(); - qApp->processEvents(); + testWidget->update(); + QTRY_VERIFY(myStyle.wasDrawn); + myStyle.wasDrawn = false; testWidget->setReadOnly(false); myStyle.setReadOnly(false); - testWidget->repaint(); - qApp->processEvents(); + testWidget->update(); + QTRY_VERIFY(myStyle.wasDrawn); testWidget->setReadOnly(wasReadOnly); testWidget->setStyle(oldStyle); @@ -3273,6 +3289,9 @@ void tst_QLineEdit::readOnlyStyleOption() void tst_QLineEdit::validateOnFocusOut() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); QSignalSpy editingFinishedSpy(testWidget, SIGNAL(editingFinished())); testWidget->setValidator(new QIntValidator(100, 999, 0)); @@ -3377,6 +3396,9 @@ void tst_QLineEdit::leftKeyOnSelectedText() void tst_QLineEdit::inlineCompletion() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); testWidget->clear(); QStandardItemModel *model = new QStandardItemModel; @@ -3556,7 +3578,7 @@ void tst_QLineEdit::textMargin() QCOMPARE(bottom, b); #endif - QTest::mouseClick(&testWidget, Qt::LeftButton, 0, mousePressPos); + QTest::mouseClick(&testWidget, Qt::LeftButton, {}, mousePressPos); QTRY_COMPARE(testWidget.cursorPosition(), cursorPosition); } @@ -3591,6 +3613,9 @@ public: void tst_QLineEdit::task180999_focus() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + task180999_Widget widget; widget.lineEdit1.setFocus(); @@ -3610,6 +3635,9 @@ void tst_QLineEdit::task180999_focus() void tst_QLineEdit::task174640_editingFinished() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QWidget mw; QVBoxLayout *layout = new QVBoxLayout(&mw); QLineEdit *le1 = new QLineEdit(&mw); @@ -3711,6 +3739,9 @@ void tst_QLineEdit::task198789_currentCompletion() void tst_QLineEdit::task210502_caseInsensitiveInlineCompletion() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QString completion("ABCD"); QStringList completions; completions << completion; @@ -3808,6 +3839,9 @@ void tst_QLineEdit::task233101_cursorPosAfterInputMethod() void tst_QLineEdit::task241436_passwordEchoOnEditRestoreEchoMode() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QStyleOptionFrame opt; QLineEdit *testWidget = ensureTestWidget(); QChar fillChar = testWidget->style()->styleHint(QStyle::SH_LineEdit_PasswordCharacter, &opt, testWidget); @@ -3855,6 +3889,9 @@ void tst_QLineEdit::task248948_redoRemovedSelection() void tst_QLineEdit::taskQTBUG_4401_enterKeyClearsPassword() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QString password("Wanna guess?"); QLineEdit *testWidget = ensureTestWidget(); @@ -3930,6 +3967,9 @@ void tst_QLineEdit::taskQTBUG_7902_contextMenuCrash() void tst_QLineEdit::taskQTBUG_7395_readOnlyShortcut() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + //ReadOnly QLineEdit should not intercept shortcut. QLineEdit le; le.setReadOnly(true); @@ -3952,6 +3992,9 @@ void tst_QLineEdit::taskQTBUG_7395_readOnlyShortcut() void tst_QLineEdit::QTBUG697_paletteCurrentColorGroup() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit le; le.setText(" "); QPalette p = le.palette(); @@ -4007,6 +4050,9 @@ protected: void tst_QLineEdit::QTBUG7174_inputMaskCursorBlink() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + UpdateRegionLineEdit edit; edit.setInputMask(QLatin1String("AAAA")); edit.setFocus(); @@ -4177,6 +4223,9 @@ void tst_QLineEdit::selectAndCursorPosition() void tst_QLineEdit::inputMethod() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); centerOnScreen(testWidget); testWidget->show(); @@ -4283,6 +4332,9 @@ void tst_QLineEdit::inputMethodQueryImHints() void tst_QLineEdit::inputMethodUpdate() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); centerOnScreen(testWidget); @@ -4397,6 +4449,9 @@ void tst_QLineEdit::undoRedoAndEchoModes() void tst_QLineEdit::clearButton() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + // Construct a listview with a stringlist model and filter model. QWidget testWidget; QVBoxLayout *l = new QVBoxLayout(&testWidget); @@ -4435,7 +4490,7 @@ void tst_QLineEdit::clearButton() QTRY_COMPARE(filterModel->rowCount(), 1); // matches 'ab' QSignalSpy spyEdited(filterLineEdit, &QLineEdit::textEdited); const QPoint clearButtonCenterPos = QRect(QPoint(0, 0), clearButton->size()).center(); - QTest::mouseClick(clearButton, Qt::LeftButton, 0, clearButtonCenterPos); + QTest::mouseClick(clearButton, Qt::LeftButton, {}, clearButtonCenterPos); QCOMPARE(spyEdited.count(), 1); QTRY_COMPARE(clearButton->cursor().shape(), filterLineEdit->cursor().shape()); QTRY_COMPARE(filterModel->rowCount(), 3); @@ -4451,6 +4506,9 @@ void tst_QLineEdit::clearButtonVisibleAfterSettingText_QTBUG_45518() #ifndef QT_BUILD_INTERNAL QSKIP("This test requires a developer build"); #else + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit edit; edit.setMinimumWidth(200); centerOnScreen(&edit); @@ -4477,7 +4535,7 @@ void tst_QLineEdit::clearButtonVisibleAfterSettingText_QTBUG_45518() QTRY_VERIFY(clearButton->opacity() > 0); QTRY_COMPARE(clearButton->cursor().shape(), Qt::ArrowCursor); - QTest::mouseClick(clearButton, Qt::LeftButton, nullptr, clearButton->rect().center()); + QTest::mouseClick(clearButton, Qt::LeftButton, {}, clearButton->rect().center()); QTRY_COMPARE(edit.text(), QString()); QTRY_COMPARE(clearButton->opacity(), qreal(0)); @@ -4679,6 +4737,9 @@ void tst_QLineEdit::shortcutOverrideOnReadonlyLineEdit_data() void tst_QLineEdit::shortcutOverrideOnReadonlyLineEdit() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QKeySequence, keySequence); QFETCH(bool, shouldBeHandledByQLineEdit); @@ -4852,6 +4913,9 @@ void tst_QLineEdit::testQuickSelectionWithMouse() void tst_QLineEdit::inputRejected() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QLineEdit *testWidget = ensureTestWidget(); QSignalSpy spyInputRejected(testWidget, SIGNAL(inputRejected())); diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index ea96322654..01d625d091 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -67,13 +67,13 @@ public: } void timerEvent(QTimerEvent*) { - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonPress, QPoint(6, 7), Qt::LeftButton, 0, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(7, 8), Qt::LeftButton, Qt::LeftButton, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(27, 23), Qt::LeftButton, Qt::LeftButton, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(30, 27), Qt::LeftButton, Qt::LeftButton, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(162, 109), Qt::LeftButton, Qt::LeftButton, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(10, 4), Qt::LeftButton, Qt::LeftButton, 0)); - qApp->postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(9, 4), Qt::LeftButton, 0, 0)); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonPress, QPoint(6, 7), Qt::LeftButton, {}, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(7, 8), Qt::LeftButton, Qt::LeftButton, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(27, 23), Qt::LeftButton, Qt::LeftButton, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(30, 27), Qt::LeftButton, Qt::LeftButton, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(162, 109), Qt::LeftButton, Qt::LeftButton, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseMove, QPoint(10, 4), Qt::LeftButton, Qt::LeftButton, {})); + QCoreApplication::postEvent(m_tb, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(9, 4), Qt::LeftButton, {}, {})); } }; @@ -91,8 +91,8 @@ public: void timerEvent(QTimerEvent*) { - qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonPress, QPoint(230, 370), Qt::LeftButton, 0, 0)); - qApp->postEvent(m_w, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(230, 370), Qt::LeftButton, 0, 0)); + QCoreApplication::postEvent(m_w, new QMouseEvent(QEvent::MouseButtonPress, QPoint(230, 370), Qt::LeftButton, {}, {})); + QCoreApplication::postEvent(m_w, new QMouseEvent(QEvent::MouseButtonRelease, QPoint(230, 370), Qt::LeftButton, {}, {})); } }; @@ -1741,6 +1741,9 @@ class MainWindow : public QMainWindow { #ifndef QT_NO_CURSOR void tst_QMainWindow::setCursor() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + MainWindow mw; QCursor cur = Qt::WaitCursor; mw.setCursor(cur); @@ -1839,6 +1842,9 @@ void tst_QMainWindow::fixedSizeCentralWidget() void tst_QMainWindow::dockWidgetSize() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; mainWindow.menuBar()->addMenu("menu"); @@ -2055,6 +2061,9 @@ void tst_QMainWindow::resizeDocks() #if QT_CONFIG(dockwidget) && QT_CONFIG(tabbar) void tst_QMainWindow::QTBUG52175_tabifiedDockWidgetActivated() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; QDockWidget *dwFirst = new QDockWidget(&w); diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp index 6d38dc262f..e3b046e448 100644 --- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp @@ -331,7 +331,7 @@ void tst_QMdiArea::subWindowActivated() int i; for ( i = 0; i < count; ++i ) { - QWidget *widget = new QWidget(workspace, 0); + QWidget *widget = new QWidget(workspace, {}); widget->setAttribute(Qt::WA_DeleteOnClose); widget->setFocus(); workspace->addSubWindow(widget)->show(); @@ -448,6 +448,9 @@ bool macHasAccessToWindowsServer() void tst_QMdiArea::subWindowActivated2() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMdiArea mdiArea; QSignalSpy spy(&mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*))); for (int i = 0; i < 5; ++i) @@ -966,6 +969,9 @@ void tst_QMdiArea::setActiveSubWindow() void tst_QMdiArea::activeSubWindow() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; QMdiArea *mdiArea = new QMdiArea; @@ -1398,6 +1404,9 @@ void tst_QMdiArea::subWindowList_data() } void tst_QMdiArea::subWindowList() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QMdiArea::WindowOrder, windowOrder); QFETCH(int, windowCount); QFETCH(int, activeSubWindow); @@ -1569,6 +1578,9 @@ void tst_QMdiArea::setViewport() void tst_QMdiArea::tileSubWindows() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMdiArea workspace; workspace.resize(600,480); workspace.show(); @@ -2073,6 +2085,9 @@ private: void tst_QMdiArea::resizeTimer() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMdiArea mdiArea; QMdiSubWindow *subWindow = mdiArea.addSubWindow(new QWidget); mdiArea.show(); diff --git a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp index 3ee9c72209..1c19bf96d6 100644 --- a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp +++ b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp @@ -152,6 +152,22 @@ Q_DECLARE_METATYPE(Qt::WindowType); Q_DECLARE_METATYPE(Qt::WindowFlags); Q_DECLARE_METATYPE(QMdiSubWindow*); +class TestPushButton : public QPushButton +{ +public: + TestPushButton(const QString &title, QWidget *parent = nullptr) + : QPushButton(title, parent) + { + } + +protected: + // don't rely on style-specific button behavior in test + bool hitButton(const QPoint &point) const override + { + return rect().contains(point); + } +}; + class tst_QMdiSubWindow : public QObject { Q_OBJECT @@ -211,6 +227,9 @@ private slots: void tst_QMdiSubWindow::initTestCase() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: Almost all of these fail. Figure out why."); + qRegisterMetaType<Qt::WindowStates>("Qt::WindowStates"); // Avoid unnecessary waits for empty top level widget lists when // testing menus. @@ -387,7 +406,7 @@ void tst_QMdiSubWindow::mainWindowSupport() // the maximized subwindow's title is imposed onto the main window's titlebar. if (!nativeMenuBar) { QCOMPARE(mainWindow.windowTitle(), QString()); - QMdiSubWindow *window = workspace->addSubWindow(new QPushButton(QLatin1String("Test"))); + QMdiSubWindow *window = workspace->addSubWindow(new TestPushButton(QLatin1String("Test"))); QString expectedTitle = QLatin1String("MainWindow's title is empty"); window->setWindowTitle(expectedTitle); QCOMPARE(window->windowTitle(), expectedTitle); @@ -1295,7 +1314,7 @@ void tst_QMdiSubWindow::changeFocusWithTab() QTest::keyPress(widget, Qt::Key_Backtab); QCOMPARE(QApplication::focusWidget(), static_cast<QWidget *>(firstLineEdit)); - QMdiSubWindow *window = mdiArea.addSubWindow(new QPushButton); + QMdiSubWindow *window = mdiArea.addSubWindow(new TestPushButton(QLatin1String("test"))); window->show(); QCOMPARE(mdiArea.activeSubWindow(), window); @@ -1904,7 +1923,7 @@ void tst_QMdiSubWindow::setFont() QSKIP("This test function is unstable in CI, please see QTBUG-22544"); QMdiArea mdiArea; mdiArea.setWindowTitle(QLatin1String(QTest::currentTestFunction())); - QMdiSubWindow *subWindow = mdiArea.addSubWindow(new QPushButton(QLatin1String("test"))); + QMdiSubWindow *subWindow = mdiArea.addSubWindow(new TestPushButton(QLatin1String("test"))); subWindow->resize(300, 100); subWindow->setWindowTitle(QLatin1String("Window title")); mdiArea.show(); @@ -2054,19 +2073,19 @@ void tst_QMdiSubWindow::task_233197() QMenuBar *menuBar = mainWindow->menuBar(); // force creation of a menubar Q_UNUSED(menuBar); - QPushButton *focus1 = new QPushButton(QLatin1String("Focus 1"), mainWindow); + QPushButton *focus1 = new TestPushButton(QLatin1String("Focus 1"), mainWindow); QObject::connect(focus1, &QAbstractButton::clicked, subWindow1, QOverload<>::of(&QWidget::setFocus)); focus1->move(5, 30); focus1->show(); - QPushButton *focus2 = new QPushButton(QLatin1String("Focus 2"), mainWindow); + QPushButton *focus2 = new TestPushButton(QLatin1String("Focus 2"), mainWindow); QObject::connect(focus2, &QAbstractButton::clicked, subWindow2, QOverload<>::of(&QWidget::setFocus)); focus2->move(5, 60); focus2->show(); - QPushButton *close = new QPushButton(QLatin1String("Close"), mainWindow); + QPushButton *close = new TestPushButton(QLatin1String("Close"), mainWindow); QObject::connect(close, &QAbstractButton::clicked, mainWindow, &QWidget::close); close->move(5, 90); close->show(); diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 727d1c2a16..d7d3a934f8 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -40,6 +40,7 @@ #include <QWidgetAction> #include <QDesktopWidget> #include <QScreen> +#include <QSpinBox> #include <qdialog.h> #include <qmenu.h> @@ -114,6 +115,7 @@ private slots: void QTBUG30595_rtl_submenu(); void QTBUG20403_nested_popup_on_shortcut_trigger(); void QTBUG47515_widgetActionEnterLeave(); + void QTBUG8122_widgetActionCrashOnClose(); void QTBUG_10735_crashWithDialog(); #ifdef Q_OS_MAC @@ -319,12 +321,12 @@ void tst_QMenu::mouseActivation() menu.addAction("Menu Action"); menu.move(topLevel.geometry().topRight() + QPoint(50, 0)); menu.show(); - QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300); + QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.rect().center(), 300); QVERIFY(!menu.isVisible()); //context menus can always be accessed with right click except on windows menu.show(); - QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300); + QTest::mouseClick(&menu, Qt::RightButton, {}, menu.rect().center(), 300); QVERIFY(!menu.isVisible()); #ifdef Q_OS_WIN @@ -643,7 +645,7 @@ void tst_QMenu::tearOff() MenuMetrics mm(menu.data()); const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2; - QTest::mouseClick(menu.data(), Qt::LeftButton, 0, QPoint(10, tearOffOffset), 10); + QTest::mouseClick(menu.data(), Qt::LeftButton, {}, QPoint(10, tearOffOffset), 10); QTRY_VERIFY(menu->isTearOffMenuVisible()); QPointer<QMenu> torn = getTornOffMenu(); QVERIFY(torn); @@ -723,7 +725,7 @@ void tst_QMenu::submenuTearOffDontClose() const QPoint submenuPos(submenuRect.topLeft() + QPoint(3, 3)); // Move then click to avoid the submenu moves from causing it to close QTest::mouseMove(menu, submenuPos, 100); - QTest::mouseClick(menu, Qt::LeftButton, 0, submenuPos, 100); + QTest::mouseClick(menu, Qt::LeftButton, {}, submenuPos, 100); QVERIFY(QTest::qWaitFor([&]() { return submenu->window()->windowHandle(); })); QVERIFY(QTest::qWaitForWindowActive(submenu)); // Make sure we enter the submenu frame directly on the tear-off area @@ -888,7 +890,7 @@ void tst_QMenu::task176201_clear() QAction *action = menu.addAction("test"); menu.connect(action, SIGNAL(triggered()), SLOT(clear())); menu.popup(QPoint()); - QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center()); + QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.rect().center()); } void tst_QMenu::task250673_activeMultiColumnSubMenuPosition() @@ -1216,13 +1218,13 @@ void tst_QMenu::click_while_dismissing_submenu() QVERIFY(sub.isVisible()); QVERIFY(QTest::qWaitForWindowExposed(&sub)); //press over the submenu entry - QTest::mousePress(menuWindow, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300); + QTest::mousePress(menuWindow, Qt::LeftButton, {}, menu.rect().center() + QPoint(0, 2), 300); //move over the main action QTest::mouseMove(menuWindow, menu.rect().center() - QPoint(0,2)); QVERIFY(menuHiddenSpy.wait()); //the submenu must have been hidden for the bug to be triggered QVERIFY(!sub.isVisible()); - QTest::mouseRelease(menuWindow, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300); + QTest::mouseRelease(menuWindow, Qt::LeftButton, {}, menu.rect().center() - QPoint(0, 2), 300); QCOMPARE(spy.count(), 1); } #endif @@ -1352,6 +1354,60 @@ void tst_QMenu::QTBUG47515_widgetActionEnterLeave() } } +void tst_QMenu::QTBUG8122_widgetActionCrashOnClose() +{ + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("Window activation is not supported"); + if (QGuiApplication::platformName() == QLatin1String("cocoa")) + QSKIP("See QTBUG-63031"); +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support QTest::mouseMove"); +#endif + + const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry(); + QRect geometry(QPoint(), availableGeometry.size() / 3); + geometry.moveCenter(availableGeometry.center()); + QPoint pointOutsideMenu = geometry.bottomRight() - QPoint(5, 5); + + QMainWindow topLevel; + topLevel.setGeometry(geometry); + + auto menuBar = topLevel.menuBar(); + auto menu = menuBar->addMenu("Menu"); + auto wAct = new QWidgetAction(menu); + auto spinBox1 = new QSpinBox(menu); + wAct->setDefaultWidget(spinBox1); + menu->addAction(wAct); + auto subMenu = menu->addMenu("Submenu"); + auto nextMenuAct = menu->addMenu(subMenu); + auto wAct2 = new QWidgetAction(menu); + auto spinBox2 = new QSpinBox(menu); + wAct2->setDefaultWidget(spinBox2); + subMenu->addAction(wAct2); + QObject::connect(spinBox2, &QSpinBox::editingFinished, menu, &QMenu::hide); + + topLevel.show(); + topLevel.setWindowTitle(QTest::currentTestFunction()); + QVERIFY(QTest::qWaitForWindowActive(&topLevel)); + QWindow *topLevelWindow = topLevel.windowHandle(); + QVERIFY(topLevelWindow); + + const QPoint menuActionPos = menuBar->mapTo(&topLevel, menuBar->actionGeometry(menu->menuAction()).center()); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), menuActionPos); + QVERIFY(QTest::qWaitForWindowExposed(menu)); + + QPoint w1Center = topLevel.mapFromGlobal(spinBox1->mapToGlobal(spinBox1->rect().center())); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), w1Center); + menu->setActiveAction(nextMenuAct); + QVERIFY(QTest::qWaitForWindowExposed(subMenu)); + + QPoint w2Center = topLevel.mapFromGlobal(spinBox2->mapToGlobal(spinBox2->rect().center())); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), w2Center); + QTest::mouseMove(topLevelWindow, topLevel.mapFromGlobal(pointOutsideMenu)); + QTRY_VERIFY(menu->isHidden()); +} + + class MyMenu : public QMenu { Q_OBJECT @@ -1480,7 +1536,7 @@ void tst_QMenu::QTBUG_56917_wideSubmenuScreenNumber() menu.popup(screen->geometry().center()); QVERIFY(QTest::qWaitForWindowExposed(&menu)); QVERIFY(menu.isVisible()); - QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.actionGeometry(action).center()); + QTest::mouseClick(&menu, Qt::LeftButton, {}, menu.actionGeometry(action).center()); QTest::qWait(100); QVERIFY(QTest::qWaitForWindowExposed(&submenu)); QVERIFY(submenu.isVisible()); @@ -1692,7 +1748,7 @@ void tst_QMenu::tearOffMenuNotDisplayed() MenuMetrics mm(menu.data()); const int tearOffOffset = mm.fw + mm.vmargin + mm.tearOffHeight / 2; - QTest::mouseClick(menu.data(), Qt::LeftButton, 0, QPoint(10, tearOffOffset), 10); + QTest::mouseClick(menu.data(), Qt::LeftButton, {}, QPoint(10, tearOffOffset), 10); QTRY_VERIFY(menu->isTearOffMenuVisible()); QPointer<QMenu> torn = getTornOffMenu(); QVERIFY(torn); diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp index 417d6e3124..b255930138 100644 --- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp @@ -338,6 +338,9 @@ inline TestMenu tst_QMenuBar::initWindowWithComplexMenuBar(QMainWindow &w) #if !defined(Q_OS_DARWIN) void tst_QMenuBar::accel() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + // create a popup menu with menu items set the accelerators later... QMainWindow w; const TestMenu menu = initWindowWithSimpleMenuBar(w); @@ -356,6 +359,9 @@ void tst_QMenuBar::accel() #if !defined(Q_OS_DARWIN) void tst_QMenuBar::activatedCount() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + // create a popup menu with menu items set the accelerators later... QMainWindow w; QFETCH( bool, forceNonNative ); @@ -555,6 +561,9 @@ void tst_QMenuBar::insertItem_QString_QObject() #if !defined(Q_OS_DARWIN) void tst_QMenuBar::check_accelKeys() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; initWindowWithComplexMenuBar(w); w.show(); @@ -631,6 +640,9 @@ void tst_QMenuBar::check_cursorKeys1() if (qgetenv("XDG_CURRENT_DESKTOP") == "Unity") QSKIP("This test is flaky on Ubuntu/Unity due to regression introduced by QTBUG-39362"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; initWindowWithComplexMenuBar(w); w.show(); @@ -668,6 +680,9 @@ void tst_QMenuBar::check_cursorKeys2() if (qgetenv("XDG_CURRENT_DESKTOP") == "Unity") QSKIP("This test is flaky on Ubuntu/Unity due to regression introduced by QTBUG-39362"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; initWindowWithComplexMenuBar(w); w.show(); @@ -704,6 +719,9 @@ void tst_QMenuBar::check_cursorKeys3() if (qgetenv("XDG_CURRENT_DESKTOP") == "Unity") QSKIP("This test is flaky on Ubuntu/Unity due to regression introduced by QTBUG-39362"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; initWindowWithComplexMenuBar(w); w.show(); @@ -733,6 +751,9 @@ void tst_QMenuBar::taskQTBUG56860_focus() #if defined(Q_OS_DARWIN) QSKIP("Native key events are needed to test menu action activation on macOS."); #endif + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; QMenuBar *mb = w.menuBar(); mb->setNativeMenuBar(false); @@ -861,6 +882,9 @@ void tst_QMenuBar::check_endKey() #if !defined(Q_OS_DARWIN) void tst_QMenuBar::check_escKey() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; const TestMenu menu = initWindowWithComplexMenuBar(w); w.show(); @@ -1051,6 +1075,9 @@ void tst_QMenuBar::allowActiveAndDisabled() void tst_QMenuBar::check_altPress() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + if ( !qApp->style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation) ) { QSKIP(QString( "this is not supposed to work in the %1 style. Skipping." ). arg(qApp->style()->objectName()).toLatin1()); @@ -1071,6 +1098,9 @@ void tst_QMenuBar::check_altPress() // should close it and QMenuBar::activeAction() should be 0. void tst_QMenuBar::check_altClosePress() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + const QStyle *style = QApplication::style(); if (!style->styleHint(QStyle::SH_MenuBar_AltKeyNavigation) ) { QSKIP(("This test is not supposed to work in the " + style->objectName().toLatin1() @@ -1101,6 +1131,9 @@ void tst_QMenuBar::check_altClosePress() #if !defined(Q_OS_DARWIN) void tst_QMenuBar::check_shortcutPress() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; const TestMenu menu = initWindowWithComplexMenuBar(w); w.show(); @@ -1144,6 +1177,9 @@ private: #if !defined(Q_OS_DARWIN) void tst_QMenuBar::check_menuPosition() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow w; Menu menu; @@ -1221,7 +1257,7 @@ void tst_QMenuBar::check_menuPosition() const QPoint bottomRight = mb->actionGeometry(menu.menuAction()).bottomRight() - QPoint(1, 1); const QPoint localPos = widgetToWindowPos(mb, bottomRight); const QPoint globalPos = w.mapToGlobal(localPos); - QTest::mouseClick(w.windowHandle(), Qt::LeftButton, 0, localPos); + QTest::mouseClick(w.windowHandle(), Qt::LeftButton, {}, localPos); QTRY_VERIFY(menu.isActiveWindow()); QCOMPARE(menu.geometry().right() - 1, globalPos.x()); menu.close(); @@ -1266,6 +1302,9 @@ void tst_QMenuBar::task256322_highlight() if (!QGuiApplication::platformName().compare(QLatin1String("minimal"), Qt::CaseInsensitive)) QSKIP("Highlighting does not work correctly for minimal platform"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow win; win.menuBar()->setNativeMenuBar(false); //we can't check the geometry of native menubars QMenu menu; @@ -1283,9 +1322,9 @@ void tst_QMenuBar::task256322_highlight() const QPoint filePos = menuBarActionWindowPos(win.menuBar(), file); QWindow *window = win.windowHandle(); - QTest::mousePress(window, Qt::LeftButton, 0, filePos); + QTest::mousePress(window, Qt::LeftButton, {}, filePos); QTest::mouseMove(window, filePos); - QTest::mouseRelease(window, Qt::LeftButton, 0, filePos); + QTest::mouseRelease(window, Qt::LeftButton, {}, filePos); QTRY_VERIFY(menu.isVisible()); QVERIFY(!menu2.isVisible()); QCOMPARE(win.menuBar()->activeAction(), file); @@ -1406,6 +1445,9 @@ void tst_QMenuBar::taskQTBUG4965_escapeEaten() void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMenuBar menubar; menubar.setNativeMenuBar(false); //we can't check the geometry of native menubars @@ -1434,6 +1476,9 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions() void tst_QMenuBar::closeOnSecondClickAndOpenOnThirdClick() // QTBUG-32807, menu should close on 2nd click. { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; mainWindow.resize(300, 200); centerOnScreen(&mainWindow); @@ -1450,11 +1495,11 @@ void tst_QMenuBar::closeOnSecondClickAndOpenOnThirdClick() // QTBUG-32807, menu QWindow *window = mainWindow.windowHandle(); QTest::mouseMove(window, center); - QTest::mouseClick(window, Qt::LeftButton, 0, center); + QTest::mouseClick(window, Qt::LeftButton, {}, center); QTRY_VERIFY(fileMenu->isVisible()); - QTest::mouseClick(window, Qt::LeftButton, 0, fileMenu->mapFromGlobal(globalPos)); + QTest::mouseClick(window, Qt::LeftButton, {}, fileMenu->mapFromGlobal(globalPos)); QTRY_VERIFY(!fileMenu->isVisible()); - QTest::mouseClick(window, Qt::LeftButton, 0, center); + QTest::mouseClick(window, Qt::LeftButton, {}, center); QTRY_VERIFY(fileMenu->isVisible()); } @@ -1543,12 +1588,12 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() QApplication::setActiveWindow(&mainWindow); // they can't be windows - QWidget hiddenParent(&mainWindow, 0); + QWidget hiddenParent(&mainWindow, {}); //this one is going to be moved around - QWidget movingParent(&hiddenParent, 0); + QWidget movingParent(&hiddenParent, {}); //set up the container widget - QWidget containerWidget(&movingParent,0); + QWidget containerWidget(&movingParent, {}); //set the new parent, a window QScopedPointer<QWidget> windowedParent; @@ -1559,7 +1604,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() QVERIFY(QTest::qWaitForWindowExposed(windowedParent.data())); //set the "container", can't be a window - QWidget containedWidget(&containerWidget, 0); + QWidget containedWidget(&containerWidget, {}); taskQTBUG53205MenuBar = new QMenuBar(&containedWidget); @@ -1567,13 +1612,13 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() //now, move things around //from : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar //to windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar - movingParent.setParent(windowedParent.data(),0); + movingParent.setParent(windowedParent.data(), {}); // this resets the parenting and the menu bar's window taskQTBUG53205MenuBar->setParent(nullptr); taskQTBUG53205MenuBar->setParent(&containedWidget); //from windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar //to : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar - movingParent.setParent(&hiddenParent,0); + movingParent.setParent(&hiddenParent, {}); windowedParent.reset(); //make the old window invalid // trigger the aciton, reset the menu bar's window, this used to crash here. testMenus.actions[0]->trigger(); @@ -1689,6 +1734,9 @@ void tst_QMenuBar::slotForTaskQTBUG53205() #if !defined(Q_OS_DARWIN) void tst_QMenuBar::taskQTBUG46812_doNotLeaveMenubarHighlighted() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; QWidget *centralWidget = new QWidget; centralWidget->setFocusPolicy(Qt::StrongFocus); @@ -1769,6 +1817,9 @@ void tst_QMenuBar::QTBUG_57404_existingMenuItemException() void tst_QMenuBar::taskQTBUG55966_subMenuRemoved() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow window; QMenuBar *menubar = window.menuBar(); QMenu *parentMenu = menubar->addMenu("Parent menu"); diff --git a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp index 76f8ebc804..17a5fe2cd9 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp +++ b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp @@ -388,6 +388,9 @@ public: void tst_QOpenGLWidget::requestUpdate() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + PaintCountWidget w; w.resize(640, 480); w.show(); @@ -580,6 +583,9 @@ void tst_QOpenGLWidget::stackWidgetOpaqueChildIsVisible() QSKIP("QScreen::grabWindow() doesn't work properly on OSX HighDPI screen: QTBUG-46803"); return; #endif + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QStackedWidget stack; diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp index 2faa02e284..a86784f2ec 100644 --- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp +++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp @@ -285,6 +285,10 @@ void tst_QPlainTextEdit::clearMustNotChangeClipboard() { if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ed->textCursor().insertText("Hello World"); QString txt("This is different text"); QApplication::clipboard()->setText(txt); @@ -463,6 +467,9 @@ void tst_QPlainTextEdit::undoAvailableAfterPaste() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QSignalSpy spy(ed->document(), SIGNAL(undoAvailable(bool))); const QString txt("Test"); @@ -656,6 +663,9 @@ void tst_QPlainTextEdit::copyAndSelectAllInReadonly() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ed->setReadOnly(true); ed->setPlainText("Hello World"); @@ -1204,6 +1214,9 @@ void tst_QPlainTextEdit::canPaste() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QApplication::clipboard()->setText(QString()); QVERIFY(!ed->canPaste()); QApplication::clipboard()->setText("Test"); diff --git a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp index f2f9cfc009..c491bbb4f6 100644 --- a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp +++ b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp @@ -239,6 +239,9 @@ void tst_QProgressBar::setValueRepaint() #ifndef Q_OS_MAC void tst_QProgressBar::setMinMaxRepaint() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ProgressBar pbar; pbar.setMinimum(0); pbar.setMaximum(10); diff --git a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp index 66f4df4498..6f4838be7a 100644 --- a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp +++ b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp @@ -325,6 +325,9 @@ void tst_QPushButton::toggled() void tst_QPushButton::setAccel() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + testWidget->setText("&AccelTest"); QKeySequence seq( Qt::ALT + Qt::Key_A ); testWidget->setShortcut( seq ); diff --git a/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp b/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp index a4edea23bc..7123acfdc3 100644 --- a/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp +++ b/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp @@ -52,6 +52,9 @@ private: void tst_QRadioButton::task190739_focus() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QWidget widget; QPushButton button1(&widget); button1.setText("button1"); diff --git a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp index 339ff293f4..2452bc34c5 100644 --- a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp +++ b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp @@ -120,11 +120,11 @@ void tst_QScrollBar::task_209492() const QPoint pressPoint(verticalScrollBar->width() / 2, verticalScrollBar->height() - 10); const QPoint globalPressPoint = verticalScrollBar->mapToGlobal(globalPressPoint); QMouseEvent mousePressEvent(QEvent::MouseButtonPress, pressPoint, globalPressPoint, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); QApplication::sendEvent(verticalScrollBar, &mousePressEvent); QTest::qWait(1); QMouseEvent mouseReleaseEvent(QEvent::MouseButtonRelease, pressPoint, globalPressPoint, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); QApplication::sendEvent(verticalScrollBar, &mouseReleaseEvent); // Check that the action was triggered once. @@ -189,11 +189,11 @@ void tst_QScrollBar::QTBUG_42871() const QPoint pressPoint(scrollBarWidget.width() / 2, scrollBarWidget.height() - 10); const QPoint globalPressPoint = scrollBarWidget.mapToGlobal(pressPoint); QMouseEvent mousePressEvent(QEvent::MouseButtonPress, pressPoint, globalPressPoint, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); QApplication::sendEvent(&scrollBarWidget, &mousePressEvent); QTest::qWait(1); QMouseEvent mouseReleaseEvent(QEvent::MouseButtonRelease, pressPoint, globalPressPoint, - Qt::LeftButton, Qt::LeftButton, 0); + Qt::LeftButton, Qt::LeftButton, {}); QApplication::sendEvent(&scrollBarWidget, &mouseReleaseEvent); // Check that the action was triggered once. QCOMPARE(myHandler.updatesCount, 1); diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp index d75e701d1c..f8022559b2 100644 --- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp +++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp @@ -500,26 +500,27 @@ void tst_QSpinBox::valueChangedHelper(int value) actualValues << value; } -class MySpinBox: public QSpinBox +class ReadOnlyChangeTracker: public QSpinBox { public: - MySpinBox(QWidget *parent = 0) : QSpinBox(parent) {} + ReadOnlyChangeTracker(QWidget *parent = 0) : QSpinBox(parent) {} void changeEvent(QEvent *ev) { - eventsReceived.append(ev->type()); + if (ev->type() == QEvent::ReadOnlyChange) + ++readOnlyChangeEventCount; } - QList<QEvent::Type> eventsReceived; + int readOnlyChangeEventCount = 0; }; void tst_QSpinBox::setReadOnly() { - MySpinBox spin(0); + ReadOnlyChangeTracker spin(0); spin.show(); QTest::keyClick(&spin, Qt::Key_Up); QCOMPARE(spin.value(), 1); spin.setReadOnly(true); #ifndef Q_OS_WINRT // QTBUG-68297 - QCOMPARE(spin.eventsReceived, QList<QEvent::Type>() << QEvent::ReadOnlyChange); + QCOMPARE(spin.readOnlyChangeEventCount, 1); #endif QTest::keyClick(&spin, Qt::Key_Up); QCOMPARE(spin.value(), 1); @@ -527,7 +528,7 @@ void tst_QSpinBox::setReadOnly() QCOMPARE(spin.value(), 2); spin.setReadOnly(false); #ifndef Q_OS_WINRT // QTBUG-68297 - QCOMPARE(spin.eventsReceived, QList<QEvent::Type>() << QEvent::ReadOnlyChange << QEvent::ReadOnlyChange); + QCOMPARE(spin.readOnlyChangeEventCount, 2); #endif QTest::keyClick(&spin, Qt::Key_Up); QCOMPARE(spin.value(), 3); @@ -906,6 +907,9 @@ void tst_QSpinBox::locale() void tst_QSpinBox::editingFinished() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QWidget testFocusWidget; testFocusWidget.setObjectName(QLatin1String("tst_qspinbox")); testFocusWidget.setWindowTitle(objectName()); @@ -1075,6 +1079,9 @@ void tst_QSpinBox::undoRedo() void tst_QSpinBox::specialValue() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QString specialText="foo"; QWidget topWidget; @@ -1167,6 +1174,9 @@ void tst_QSpinBox::sizeHint() void tst_QSpinBox::taskQTBUG_5008_textFromValueAndValidate() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + class DecoratedSpinBox : public QSpinBox { public: @@ -1245,6 +1255,9 @@ void tst_QSpinBox::lineEditReturnPressed() void tst_QSpinBox::positiveSign() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QSpinBox spinBox; spinBox.setRange(-20, 20); spinBox.setValue(-20); @@ -1260,6 +1273,9 @@ void tst_QSpinBox::positiveSign() void tst_QSpinBox::interpretOnLosingFocus() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + // QTBUG-55249: When typing an invalid value after QSpinBox::clear(), // it should be fixed up on losing focus. @@ -1614,6 +1630,9 @@ void tst_QSpinBox::stepModifierKeys_data() void tst_QSpinBox::stepModifierKeys() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(int, startValue); QFETCH(int, stepModifier); QFETCH(QTestEventList, keys); @@ -1697,6 +1716,9 @@ void tst_QSpinBox::stepModifierButtons_data() void tst_QSpinBox::stepModifierButtons() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QStyle::SubControl, subControl); QFETCH(int, stepModifier); QFETCH(Qt::KeyboardModifiers, modifiers); @@ -1782,6 +1804,9 @@ void tst_QSpinBox::stepModifierPressAndHold_data() void tst_QSpinBox::stepModifierPressAndHold() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(QStyle::SubControl, subControl); QFETCH(int, stepModifier); QFETCH(Qt::KeyboardModifiers, modifiers); diff --git a/tests/auto/widgets/widgets/qsplashscreen/tst_qsplashscreen.cpp b/tests/auto/widgets/widgets/qsplashscreen/tst_qsplashscreen.cpp index 91a9c49b00..64e4582366 100644 --- a/tests/auto/widgets/widgets/qsplashscreen/tst_qsplashscreen.cpp +++ b/tests/auto/widgets/widgets/qsplashscreen/tst_qsplashscreen.cpp @@ -36,6 +36,7 @@ class tst_QSplashScreen : public QObject private slots: void checkCloseTime(); + void checkScreenConstructor(); }; class CloseEventSplash : public QSplashScreen @@ -69,5 +70,16 @@ void tst_QSplashScreen::checkCloseTime() QVERIFY(w.windowHandle()->isExposed()); } +void tst_QSplashScreen::checkScreenConstructor() +{ + for (const auto screen : QGuiApplication::screens()) { + QSplashScreen splash(screen); + splash.show(); + QCOMPARE(splash.screen(), screen); + QVERIFY(splash.windowHandle()); + QCOMPARE(splash.windowHandle()->screen(), screen); + } +} + QTEST_MAIN(tst_QSplashScreen) #include "tst_qsplashscreen.moc" diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index cbeb77a25e..cc65accdc3 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -278,6 +278,9 @@ void tst_QSplitter::saveAndRestoreState() void tst_QSplitter::saveAndRestoreStateOfNotYetShownSplitter() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QSplitter *spl = new QSplitter; QLabel *l1 = new QLabel; QLabel *l2 = new QLabel; @@ -590,6 +593,9 @@ void tst_QSplitter::testShowHide_data() void tst_QSplitter::testShowHide() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(bool, hideWidget1); QFETCH(bool, hideWidget2); @@ -716,6 +722,9 @@ void tst_QSplitter::replaceWidget_data() void tst_QSplitter::replaceWidget() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QFETCH(int, index); QFETCH(bool, visible); QFETCH(bool, collapsed); @@ -962,6 +971,9 @@ class MyTextEdit : public QTextEdit void tst_QSplitter::task169702_sizes() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QWidget topLevel; // Create two nested (non-collapsible) splitters QSplitter* outerSplitter = new QSplitter(Qt::Vertical, &topLevel); diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp index 59a334fab9..4fd3661fa7 100644 --- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp +++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp @@ -163,6 +163,9 @@ private: void tst_QStackedWidget::dynamicPages() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QStackedWidget stackedWidget; QStackedWidget *sw = &stackedWidget; diff --git a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp index 928910344c..256906080e 100644 --- a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp +++ b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp @@ -132,6 +132,9 @@ void tst_QStatusBar::insertPermanentWidget() void tst_QStatusBar::setSizeGripEnabled() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; QPointer<QStatusBar> statusBar = mainWindow.statusBar(); QVERIFY(statusBar); @@ -223,6 +226,9 @@ void tst_QStatusBar::task194017_hiddenWidget() void tst_QStatusBar::QTBUG4334_hiddenOnMaximizedWindow() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow main; QStatusBar statusbar; statusbar.setSizeGripEnabled(true); diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp index 550cca8145..e27600bad2 100644 --- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp +++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp @@ -33,6 +33,7 @@ #include <qpushbutton.h> #include <qstyle.h> +#include <qstyleoption.h> class tst_QTabBar : public QObject { @@ -60,6 +61,10 @@ private slots: void removeTab_data(); void removeTab(); + void hideTab_data(); + void hideTab(); + void hideAllTabs(); + void setElideMode_data(); void setElideMode(); void sizeHints(); @@ -244,6 +249,96 @@ void tst_QTabBar::removeTab() QTEST(tabbar.currentIndex(), "finalIndex"); } +void tst_QTabBar::hideTab_data() +{ + QTest::addColumn<int>("currentIndex"); + QTest::addColumn<int>("hideIndex"); + QTest::addColumn<int>("spyCount"); + QTest::addColumn<int>("finalIndex"); + + QTest::newRow("hideEnd") << 0 << 2 << 0 << 0; + QTest::newRow("hideEndWithIndexOnEnd") << 2 << 2 << 1 << 1; + QTest::newRow("hideMiddle") << 2 << 1 << 0 << 2; + QTest::newRow("hideMiddleOnMiddle") << 1 << 1 << 1 << 2; + QTest::newRow("hideFirst") << 2 << 0 << 0 << 2; + QTest::newRow("hideFirstOnFirst") << 0 << 0 << 1 << 1; +} + +void tst_QTabBar::hideTab() +{ + QTabBar tabbar; + + QFETCH(int, currentIndex); + QFETCH(int, hideIndex); + tabbar.addTab("foo"); + tabbar.addTab("bar"); + tabbar.addTab("baz"); + tabbar.setCurrentIndex(currentIndex); + QSignalSpy spy(&tabbar, &QTabBar::currentChanged); + tabbar.setTabVisible(hideIndex, false); + QTEST(spy.count(), "spyCount"); + QTEST(tabbar.currentIndex(), "finalIndex"); +} + +class TabBar : public QTabBar +{ +public: + using QTabBar::QTabBar; + using QTabBar::initStyleOption; + using QTabBar::moveTab; +}; + +void tst_QTabBar::hideAllTabs() +{ + TabBar tabbar; + auto checkPositions = [&tabbar](const QVector<int> &positions) + { + QStyleOptionTab option; + int iPos = 0; + for (int i = 0; i < tabbar.count(); ++i) { + if (!tabbar.isTabVisible(i)) + continue; + tabbar.initStyleOption(&option, i); + QCOMPARE(option.position, positions.at(iPos++)); + } + }; + + tabbar.addTab("foo"); + tabbar.addTab("bar"); + tabbar.addTab("baz"); + tabbar.setCurrentIndex(0); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End}); + + // Check we don't crash trying to hide an unexistant tab + QSize prevSizeHint = tabbar.sizeHint(); + tabbar.setTabVisible(3, false); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End}); + QCOMPARE(tabbar.currentIndex(), 0); + QSize sizeHint = tabbar.sizeHint(); + QVERIFY(sizeHint.width() == prevSizeHint.width()); + prevSizeHint = sizeHint; + + tabbar.setTabVisible(1, false); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::End}); + QCOMPARE(tabbar.currentIndex(), 0); + sizeHint = tabbar.sizeHint(); + QVERIFY(sizeHint.width() < prevSizeHint.width()); + prevSizeHint = sizeHint; + + tabbar.setTabVisible(2, false); + checkPositions({QStyleOptionTab::OnlyOneTab}); + QCOMPARE(tabbar.currentIndex(), 0); + sizeHint = tabbar.sizeHint(); + QVERIFY(sizeHint.width() < prevSizeHint.width()); + prevSizeHint = sizeHint; + + tabbar.setTabVisible(0, false); + // We cannot set currentIndex < 0 + QCOMPARE(tabbar.currentIndex(), 0); + sizeHint = tabbar.sizeHint(); + QVERIFY(sizeHint.width() < prevSizeHint.width()); +} + void tst_QTabBar::setElideMode_data() { QTest::addColumn<int>("tabElideMode"); @@ -500,14 +595,6 @@ void tst_QTabBar::selectionBehaviorOnRemove() QCOMPARE(tabbar.currentIndex(), expected); } -class TabBar : public QTabBar -{ - Q_OBJECT -public: - void callMoveTab(int from, int to){ moveTab(from, to); } -}; - - Q_DECLARE_METATYPE(QTabBar::Shape) void tst_QTabBar::moveTab_data() { @@ -542,7 +629,7 @@ void tst_QTabBar::moveTab() bar.setShape(shape); while(--tabs >= 0) bar.addTab(QString::number(tabs)); - bar.callMoveTab(from, to); + bar.moveTab(from, to); } @@ -605,7 +692,7 @@ void tst_QTabBar::changeTitleWhileDoubleClickingTab() QPoint tabPos = bar.tabRect(0).center(); for(int i=0; i < 10; i++) - QTest::mouseDClick(&bar, Qt::LeftButton, 0, tabPos); + QTest::mouseDClick(&bar, Qt::LeftButton, {}, tabPos); } class Widget10052 : public QWidget @@ -655,12 +742,12 @@ void tst_QTabBar::tabBarClicked() while (button <= Qt::MaxMouseButton) { const QPoint tabPos = tabBar.tabRect(0).center(); - QTest::mouseClick(&tabBar, button, 0, tabPos); + QTest::mouseClick(&tabBar, button, {}, tabPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); QCOMPARE(doubleClickSpy.count(), 0); - QTest::mouseDClick(&tabBar, button, 0, tabPos); + QTest::mouseDClick(&tabBar, button, {}, tabPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); QCOMPARE(doubleClickSpy.count(), 1); @@ -668,12 +755,12 @@ void tst_QTabBar::tabBarClicked() const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y()); - QTest::mouseClick(&tabBar, button, 0, barPos); + QTest::mouseClick(&tabBar, button, {}, barPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); QCOMPARE(doubleClickSpy.count(), 0); - QTest::mouseDClick(&tabBar, button, 0, barPos); + QTest::mouseDClick(&tabBar, button, {}, barPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); QCOMPARE(doubleClickSpy.count(), 1); diff --git a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp index feade7d443..28b8bfc6b3 100644 --- a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp +++ b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp @@ -81,6 +81,7 @@ private slots: void addRemoveTab(); void tabPosition(); void tabEnabled(); + void tabHidden(); void tabText(); void tabShape(); void tabTooltip(); @@ -246,6 +247,30 @@ void tst_QTabWidget::tabEnabled() removePage(index); } +void tst_QTabWidget::tabHidden() +{ + // Test bad arguments + QVERIFY(!tw->isTabVisible(-1)); + tw->setTabVisible(-1, false); + QVERIFY(!tw->isTabVisible(tw->count())); + tw->setTabVisible(tw->count(), false); + + const int index = addPage(); + + tw->setTabVisible(index, true); + QVERIFY(tw->isTabVisible(index)); + tw->setTabVisible(index, false); + QVERIFY(!tw->isTabVisible(index)); + tw->setTabVisible(index, true); + QVERIFY(tw->isTabVisible(index)); + + removePage(index); + + for (int i = 0; i < tw->count(); ++i) { + QVERIFY(tw->isTabVisible(i)); + } +} + void tst_QTabWidget::tabText() { // Test bad arguments @@ -536,6 +561,9 @@ protected: void tst_QTabWidget::paintEventCount() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + Q_CHECK_PAINTEVENTS PaintCounter *tab1 = new PaintCounter; @@ -665,12 +693,12 @@ void tst_QTabWidget::tabBarClicked() while (button <= Qt::MaxMouseButton) { const QPoint tabPos = tabBar.tabRect(0).center(); - QTest::mouseClick(&tabBar, button, 0, tabPos); + QTest::mouseClick(&tabBar, button, {}, tabPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); QCOMPARE(doubleClickSpy.count(), 0); - QTest::mouseDClick(&tabBar, button, 0, tabPos); + QTest::mouseDClick(&tabBar, button, {}, tabPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); QCOMPARE(doubleClickSpy.count(), 1); @@ -678,12 +706,12 @@ void tst_QTabWidget::tabBarClicked() const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y()); - QTest::mouseClick(&tabBar, button, 0, barPos); + QTest::mouseClick(&tabBar, button, {}, barPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); QCOMPARE(doubleClickSpy.count(), 0); - QTest::mouseDClick(&tabBar, button, 0, barPos); + QTest::mouseDClick(&tabBar, button, {}, barPos); QCOMPARE(clickSpy.count(), 1); QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); QCOMPARE(doubleClickSpy.count(), 1); diff --git a/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp b/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp index 27bf0ce7be..2496d446d8 100644 --- a/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp +++ b/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp @@ -70,6 +70,7 @@ class tst_QTextBrowser : public QObject Q_OBJECT private slots: + void initTestCase(); void init(); void cleanup(); @@ -101,6 +102,12 @@ private: TestBrowser *browser; }; +void tst_QTextBrowser::initTestCase() +{ + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); +} + void tst_QTextBrowser::init() { QString prefix = QFileInfo(QFINDTESTDATA("subdir")).absolutePath(); diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index b31e230893..485a0b0f93 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -500,6 +500,10 @@ void tst_QTextEdit::clearMustNotChangeClipboard() { if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ed->textCursor().insertText("Hello World"); QString txt("This is different text"); QApplication::clipboard()->setText(txt); @@ -756,7 +760,7 @@ void tst_QTextEdit::cursorPositionChanged() ed->setTextCursor(cursor); spy.clear(); QVERIFY(!ed->textCursor().hasSelection()); - QTest::mouseDClick(ed->viewport(), Qt::LeftButton, 0, ed->cursorRect().center()); + QTest::mouseDClick(ed->viewport(), Qt::LeftButton, {}, ed->cursorRect().center()); QVERIFY(ed->textCursor().hasSelection()); QCOMPARE(spy.count(), 1); @@ -790,6 +794,9 @@ void tst_QTextEdit::undoAvailableAfterPaste() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QSignalSpy spy(ed->document(), SIGNAL(undoAvailable(bool))); const QString txt("Test"); @@ -1012,6 +1019,9 @@ void tst_QTextEdit::copyAndSelectAllInReadonly() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ed->setReadOnly(true); ed->setPlainText("Hello World"); @@ -1559,6 +1569,9 @@ void tst_QTextEdit::canPaste() if (!PlatformClipboard::isAvailable()) QSKIP("Clipboard not working with cron-started unit tests"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QApplication::clipboard()->setText(QString()); QVERIFY(!ed->canPaste()); QApplication::clipboard()->setText("Test"); @@ -1864,6 +1877,9 @@ void tst_QTextEdit::copyPasteBackgroundImage() if (!PlatformClipboard::isAvailable()) QSKIP("Native clipboard not working in this setup"); + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QImage foo(16, 16, QImage::Format_ARGB32_Premultiplied); foo.save("foo.png"); ed->setHtml("<body><table><tr><td background=\"foo.png\">Foo</td></tr></table></body>"); @@ -2440,6 +2456,9 @@ void tst_QTextEdit::bidiLogicalMovement() void tst_QTextEdit::inputMethodEvent() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + ed->show(); // test that text change with an input method event triggers change signal @@ -2543,6 +2562,9 @@ void tst_QTextEdit::inputMethodCursorRect() void tst_QTextEdit::highlightLongLine() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QTextEdit edit; edit.setAcceptRichText(false); edit.setWordWrapMode(QTextOption::NoWrap); diff --git a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp index d6c165642e..61252831ed 100644 --- a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp +++ b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp @@ -551,7 +551,7 @@ void tst_QToolBar::actionGeometry() QToolBarExtension *extension = extensions.at(0); if (extension->isVisible()) { QRect rect0 = extension->geometry(); - QTest::mouseClick( extension, Qt::LeftButton, 0, rect0.center(), -1 ); + QTest::mouseClick( extension, Qt::LeftButton, {}, rect0.center(), -1 ); QApplication::processEvents(); popupMenu = qobject_cast<QMenu *>(extension->menu()); rect01 = popupMenu->actionGeometry(&action1); @@ -873,7 +873,7 @@ void tst_QToolBar::actionTriggered() QToolBarExtension *extension = extensions.at(0); if (extension->isVisible()) { QRect rect0 = extension->geometry(); - QTest::mouseClick( extension, Qt::LeftButton, 0, rect0.center(), -1 ); + QTest::mouseClick( extension, Qt::LeftButton, {}, rect0.center(), -1 ); QApplication::processEvents(); popupMenu = qobject_cast<QMenu *>(extension->menu()); rect01 = popupMenu->actionGeometry(&action1); @@ -914,28 +914,28 @@ void tst_QToolBar::actionTriggered() if (!rect01.isValid()) QTest::mouseClick(button1, Qt::LeftButton); else - QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect01.center(), -1 ); + QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect01.center(), -1 ); QCOMPARE(::triggered, &action1); ::triggered = 0; if (!rect02.isValid()) QTest::mouseClick(button2, Qt::LeftButton); else - QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect02.center(), -1 ); + QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect02.center(), -1 ); QCOMPARE(::triggered, &action2); ::triggered = 0; if (!rect03.isValid()) QTest::mouseClick(button3, Qt::LeftButton); else - QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect03.center(), -1 ); + QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect03.center(), -1 ); QCOMPARE(::triggered, &action3); ::triggered = 0; if (!rect04.isValid()) QTest::mouseClick(button4, Qt::LeftButton); else - QTest::mouseClick(popupMenu, Qt::LeftButton, 0, rect04.center(), -1 ); + QTest::mouseClick(popupMenu, Qt::LeftButton, {}, rect04.center(), -1 ); QCOMPARE(::triggered, &action4); } @@ -1029,6 +1029,9 @@ QT_END_NAMESPACE void tst_QToolBar::accel() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + #ifdef Q_OS_MAC qt_set_sequence_auto_mnemonic(true); #endif @@ -1071,6 +1074,9 @@ void tst_QToolBar::task191727_layout() void tst_QToolBar::task197996_visibility() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mw; QToolBar *toolBar = new QToolBar(&mw); @@ -1129,6 +1135,9 @@ private: void tst_QToolBar::extraCpuConsumption() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QMainWindow mainWindow; auto tb = new QToolBar(&mainWindow); diff --git a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp index 44b30fa794..ed4df2fc23 100644 --- a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp +++ b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp @@ -110,6 +110,9 @@ void tst_QToolButton::getSetCheck() void tst_QToolButton::triggered() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + qRegisterMetaType<QAction *>("QAction *"); QWidget mainWidget; mainWidget.setWindowTitle(QStringLiteral("triggered")); @@ -193,6 +196,9 @@ void tst_QToolButton::task230994_iconSize() void tst_QToolButton::task176137_autoRepeatOfAction() { + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) + QSKIP("Wayland: This fails. Figure out why."); + QAction action(0); QWidget mainWidget; mainWidget.setWindowTitle(QStringLiteral("task176137_autoRepeatOfAction")); @@ -209,14 +215,14 @@ void tst_QToolButton::task176137_autoRepeatOfAction() QSignalSpy spy(&action,SIGNAL(triggered())); QTest::mousePress (toolButton, Qt::LeftButton); - QTest::mouseRelease (toolButton, Qt::LeftButton, 0, QPoint (), 2000); + QTest::mouseRelease (toolButton, Qt::LeftButton, {}, QPoint (), 2000); QCOMPARE(spy.count(),1); // try again with auto repeat toolButton->setAutoRepeat (true); QSignalSpy repeatSpy(&action,SIGNAL(triggered())); // new spy QTest::mousePress (toolButton, Qt::LeftButton); - QTest::mouseRelease (toolButton, Qt::LeftButton, 0, QPoint (), 3000); + QTest::mouseRelease (toolButton, Qt::LeftButton, {}, QPoint (), 3000); const qreal expected = (3000 - toolButton->autoRepeatDelay()) / toolButton->autoRepeatInterval() + 1; //we check that the difference is small (on some systems timers are not super accurate) qreal diff = (expected - repeatSpy.count()) / expected; @@ -236,7 +242,7 @@ void tst_QToolButton::sendMouseClick() } if (!m_menu->isVisible()) return; - QTest::mouseClick(m_menu.data(), Qt::LeftButton, 0, QPoint(7, 7)); + QTest::mouseClick(m_menu.data(), Qt::LeftButton, {}, QPoint(7, 7)); if (QTimer *timer = qobject_cast<QTimer *>(sender())) { timer->stop(); timer->deleteLater(); |