diff options
Diffstat (limited to 'tests/auto/widgets/widgets')
17 files changed, 353 insertions, 159 deletions
diff --git a/tests/auto/widgets/widgets/qcombobox/BLACKLIST b/tests/auto/widgets/widgets/qcombobox/BLACKLIST index c04351e5ca..2d6228075a 100644 --- a/tests/auto/widgets/widgets/qcombobox/BLACKLIST +++ b/tests/auto/widgets/widgets/qcombobox/BLACKLIST @@ -1,7 +1,3 @@ -QTBUG-45531 -[task260974_menuItemRectangleForComboBoxPopup] -osx-10.10 - [task_QTBUG_56693_itemFontFromModel] # Counts draw calls, but we could have multiple expose events QTBUG-62080 osx diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index b6007482ae..0c229c9194 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -2052,13 +2052,13 @@ void tst_QComboBox::mouseWheel_data() QTest::newRow("upper locked") << disabled << start << wheel << expected; wheel = -1; -#ifdef Q_OS_DARWIN + const bool allowsWheelScroll = QApplication::style()->styleHint(QStyle::SH_ComboBox_AllowWheelScrolling); // on OS X & iOS mouse wheel shall have no effect on combo box - expected = start; -#else - // on other OSes we should jump to next enabled item (no. 5) - expected = 5; -#endif + if (!allowsWheelScroll) + expected = start; + else // on other OSes we should jump to next enabled item (no. 5) + expected = 5; + QTest::newRow("jump over") << disabled << start << wheel << expected; disabled.clear(); @@ -3273,7 +3273,7 @@ void tst_QComboBox::task_QTBUG_49831_scrollerNotActivated() class QTBUG_56693_Model : public QStandardItemModel { public: - QTBUG_56693_Model(QObject *parent = Q_NULLPTR) + QTBUG_56693_Model(QObject *parent = nullptr) : QStandardItemModel(parent) { } @@ -3301,7 +3301,7 @@ public: } - void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = Q_NULLPTR) const override + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w = nullptr) const override { if (element == CE_MenuItem) if (const QStyleOptionMenuItem *menuItem = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index a3571cd9c5..fa28ec2575 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -336,7 +336,7 @@ void tst_QDateTimeEdit::constructor_qwidget() QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0))); QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14)); QCOMPARE(dte.minimumTime(), QTime(0, 0, 0, 0)); - QCOMPARE(dte.maximumDate(), QDate(7999, 12, 31)); + QCOMPARE(dte.maximumDate(), QDate(9999, 12, 31)); QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); } @@ -352,12 +352,12 @@ void tst_QDateTimeEdit::constructor_qdatetime_data() QTest::newRow("normal") << QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764)) << QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764)) << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); + << QDate(9999, 12, 31) << QTime(23, 59, 59, 999); QTest::newRow("invalid") << QDateTime(QDate(9999, 99, 99), QTime(13, 46, 32, 764)) << QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)) << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); + << QDate(9999, 12, 31) << QTime(23, 59, 59, 999); } void tst_QDateTimeEdit::constructor_qdatetime() @@ -392,12 +392,12 @@ void tst_QDateTimeEdit::constructor_qdate_data() QTest::newRow("normal") << QDate(2004, 6, 16) << QDateTime(QDate(2004, 6, 16), QTime(0, 0, 0, 0)) << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); + << QDate(9999, 12, 31) << QTime(23, 59, 59, 999); QTest::newRow("invalid") << QDate(9999, 99, 99) << QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)) << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); + << QDate(9999, 12, 31) << QTime(23, 59, 59, 999); } void tst_QDateTimeEdit::constructor_qdate() @@ -467,7 +467,7 @@ void tst_QDateTimeEdit::minimumDate_data() QTest::newRow("normal-0") << QDate(2004, 5, 10) << QDate(2004, 5, 10); QTest::newRow("normal-1") << QDate(2002, 3, 15) << QDate(2002, 3, 15); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31); + QTest::newRow("normal-2") << QDate(9999, 12, 31) << QDate(9999, 12, 31); QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1); QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(1752, 9, 14); QTest::newRow("old") << QDate(1492, 8, 3) << QDate(1492, 8, 3); @@ -528,7 +528,7 @@ void tst_QDateTimeEdit::maximumDateTime_data() << QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23)); QTest::newRow("normal-4") << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)) << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)); - QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); + QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); } void tst_QDateTimeEdit::maximumDateTime() @@ -547,9 +547,9 @@ void tst_QDateTimeEdit::maximumDate_data() QTest::newRow("normal-0") << QDate(2004, 05, 10) << QDate(2004, 5, 10); QTest::newRow("normal-1") << QDate(2002, 03, 15) << QDate(2002, 3, 15); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31); + QTest::newRow("normal-2") << QDate(9999, 12, 31) << QDate(9999, 12, 31); QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(7999, 12, 31); + QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(9999, 12, 31); } void tst_QDateTimeEdit::maximumDate() @@ -569,7 +569,7 @@ void tst_QDateTimeEdit::clearMinimumDate_data() QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(1752, 9, 14); QTest::newRow("normal-1") << QDate(2002, 3, 15) << true << QDate(1752, 9, 14); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(1752, 9, 14); + QTest::newRow("normal-2") << QDate(9999, 12, 31) << true << QDate(1752, 9, 14); QTest::newRow("normal-3") << QDate(1753, 1, 1) << true << QDate(1752, 9, 14); QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(1752, 9, 14); } @@ -597,7 +597,7 @@ void tst_QDateTimeEdit::clearMinimumDateTime_data() << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13)) << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14)) + QTest::newRow("normal-2") << QDateTime(QDate(9999, 12, 31), QTime(14, 14, 14)) << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15)) << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); @@ -626,15 +626,15 @@ void tst_QDateTimeEdit::clearMaximumDateTime_data() QTest::addColumn<QDateTime>("expectedMinDateTimeAfterClear"); QTest::newRow("normal-0") << QDateTime(QDate(2004, 05, 10), QTime(12, 12, 12)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); + << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); - QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); + << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); + QTest::newRow("normal-2") << QDateTime(QDate(9999, 12, 31), QTime(14, 14, 14)) + << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); + << true << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); QTest::newRow("invalid-0") << QDateTime() - << false << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); + << false << QDateTime(QDate(9999, 12, 31), QTime(23, 59, 59, 999)); } void tst_QDateTimeEdit::clearMaximumDateTime() @@ -656,11 +656,11 @@ void tst_QDateTimeEdit::clearMaximumDate_data() QTest::addColumn<bool>("valid"); QTest::addColumn<QDate>("expectedMaxDateAfterClear"); - QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(7999, 12, 31); - QTest::newRow("normal-1") << QDate(2002, 03, 15) << true << QDate(7999, 12, 31); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(7999, 12, 31); - QTest::newRow("normal-3") << QDate(2000, 1, 1) << true << QDate(7999, 12, 31); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(7999, 12, 31); + QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(9999, 12, 31); + QTest::newRow("normal-1") << QDate(2002, 03, 15) << true << QDate(9999, 12, 31); + QTest::newRow("normal-2") << QDate(9999, 12, 31) << true << QDate(9999, 12, 31); + QTest::newRow("normal-3") << QDate(2000, 1, 1) << true << QDate(9999, 12, 31); + QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(9999, 12, 31); } void tst_QDateTimeEdit::clearMaximumDate() diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp index 9e6b16d4ce..1813e5ad5f 100644 --- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp +++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp @@ -204,7 +204,7 @@ void tst_QFontComboBox::sizeHint() SubQFontComboBox box; QSize sizeHint = box.QComboBox::sizeHint(); QFontMetrics fm(box.font()); - sizeHint.setWidth(qMax(sizeHint.width(), fm.width(QLatin1Char('m'))*14)); + sizeHint.setWidth(qMax(sizeHint.width(), fm.horizontalAdvance(QLatin1Char('m'))*14)); QCOMPARE(box.sizeHint(), sizeHint); } diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp index 6363d0c673..500ec2e1fa 100644 --- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp +++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp @@ -47,7 +47,7 @@ public: QList<QEvent::Type> events; protected: - bool event(QEvent *ev) Q_DECL_OVERRIDE { + bool event(QEvent *ev) override { events.append(ev->type()); return QWidget::event(ev); } diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index 21669e42cd..1513025f16 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -67,6 +67,8 @@ #include "../../../shared/platforminputcontext.h" #include <private/qinputmethod_p.h> +Q_LOGGING_CATEGORY(lcTests, "qt.widgets.tests") + QT_BEGIN_NAMESPACE class QPainter; QT_END_NAMESPACE @@ -300,8 +302,8 @@ private slots: void shortcutOverrideOnReadonlyLineEdit_data(); void shortcutOverrideOnReadonlyLineEdit(); void QTBUG59957_clearButtonLeftmostAction(); - void QTBUG_60319_setInputMaskCheckImSurroundingText(); + void testQuickSelectionWithMouse(); protected slots: void editingFinished(); @@ -3046,7 +3048,7 @@ void tst_QLineEdit::cutWithoutSelection() QClipboard *clipboard = QGuiApplication::clipboard(); if (!PlatformClipboard::isAvailable() || !QGuiApplication::platformName().compare("xcb", Qt::CaseInsensitive)) { // Avoid unstable X11 clipboard - clipboard = Q_NULLPTR; + clipboard = nullptr; } if (clipboard) @@ -3436,8 +3438,8 @@ void tst_QLineEdit::textMargin_data() // Different styles generate different offsets, so // calculate the width rather than hardcode it. - const int pixelWidthOfM = metrics.width(s, 1); - const int pixelWidthOfMMM_MM = metrics.width(s, 6); + const int pixelWidthOfM = metrics.horizontalAdvance(s, 1); + const int pixelWidthOfMMM_MM = metrics.horizontalAdvance(s, 6); QTest::newRow("default-0") << 0 << 0 << 0 << 0 << QPoint(pixelWidthOfMMM_MM, 0) << 6; QTest::newRow("default-1") << 0 << 0 << 0 << 0 << QPoint(1, 1) << 0; @@ -4475,7 +4477,7 @@ template <class T> T *findAssociatedWidget(const QAction *a) if (T *result = qobject_cast<T *>(w)) return result; } - return Q_NULLPTR; + return nullptr; } void tst_QLineEdit::sideWidgetsActionEvents() @@ -4699,5 +4701,90 @@ void tst_QLineEdit::QTBUG_60319_setInputMaskCheckImSurroundingText() QCOMPARE(surroundingText.length(), cursorPosition); } +void tst_QLineEdit::testQuickSelectionWithMouse() +{ + const auto text = QStringLiteral("This is quite a long line of text."); + const auto prefix = QStringLiteral("Th"); + const auto suffix = QStringLiteral("t."); + QVERIFY(text.startsWith(prefix)); + QVERIFY(text.endsWith(suffix)); + + QLineEdit lineEdit; + lineEdit.setText(text); + lineEdit.show(); + + const QPoint center = lineEdit.contentsRect().center(); + + // Normal mouse selection from left to right, y doesn't change. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(!lineEdit.selectedText().isEmpty()); + QVERIFY(!lineEdit.selectedText().endsWith(suffix)); + + // Normal mouse selection from left to right, y change is below threshold. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 5)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(!lineEdit.selectedText().isEmpty()); + QVERIFY(!lineEdit.selectedText().endsWith(suffix)); + + // Normal mouse selection from right to left, y doesn't change. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(-20, 0)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(!lineEdit.selectedText().isEmpty()); + QVERIFY(!lineEdit.selectedText().startsWith(prefix)); + + // Normal mouse selection from right to left, y change is below threshold. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(-20, -5)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(!lineEdit.selectedText().isEmpty()); + QVERIFY(!lineEdit.selectedText().startsWith(prefix)); + + const int offset = QGuiApplication::styleHints()->mouseQuickSelectionThreshold() + 1; + + // Select the whole right half. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, offset)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(lineEdit.selectedText().endsWith(suffix)); + + // Select the whole left half. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, -offset)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(lineEdit.selectedText().startsWith(prefix)); + + // Normal selection -> quick selection -> back to normal selection. + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0)); + const auto partialSelection = lineEdit.selectedText(); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(!partialSelection.endsWith(suffix)); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, offset)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); + QVERIFY(lineEdit.selectedText().endsWith(suffix)); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0)); + qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText(); +#ifdef Q_PROCESSOR_ARM + QEXPECT_FAIL("", "Currently fails on gcc-armv7, needs investigation.", Continue); +#endif + QCOMPARE(lineEdit.selectedText(), partialSelection); + + lineEdit.setLayoutDirection(Qt::RightToLeft); + + // Select the whole left half (RTL layout). + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, offset)); + QVERIFY(lineEdit.selectedText().startsWith(prefix)); + + // Select the whole right half (RTL layout). + QTest::mousePress(lineEdit.windowHandle(), Qt::LeftButton, Qt::NoModifier, center); + QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(1, -offset)); + QVERIFY(lineEdit.selectedText().endsWith(suffix)); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 91c12e292d..28e8ba81d6 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -111,9 +111,8 @@ private slots: void QTBUG7411_submenus_activate(); void QTBUG30595_rtl_submenu(); void QTBUG20403_nested_popup_on_shortcut_trigger(); -#ifndef QT_NO_CURSOR void QTBUG47515_widgetActionEnterLeave(); -#endif + void QTBUG_10735_crashWithDialog(); #ifdef Q_OS_MAC void QTBUG_37933_ampersands_data(); @@ -610,7 +609,7 @@ static QMenu *getTornOffMenu() if (w->isVisible() && w->inherits("QTornOffMenu")) return static_cast<QMenu *>(w); } - return Q_NULLPTR; + return nullptr; } void tst_QMenu::tearOff() @@ -812,7 +811,7 @@ public: } protected: - void showEvent(QShowEvent *e) Q_DECL_OVERRIDE + void showEvent(QShowEvent *e) override { QVERIFY(m_subMenu->isVisible()); QVERIFY2(m_subMenu->x() > x(), @@ -821,7 +820,7 @@ protected: QMenu::showEvent(e); } - void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE + void timerEvent(QTimerEvent *e) override { if (e->timerId() == m_timerId) { switch (m_timerTick++) { @@ -1176,25 +1175,27 @@ void tst_QMenu::click_while_dismissing_submenu() menu.addMenu(&sub); centerOnScreen(&menu, QSize(120, 100)); menu.show(); - QSignalSpy spy(action, SIGNAL(triggered())); - QSignalSpy menuShownSpy(&sub, SIGNAL(aboutToShow())); - QSignalSpy menuHiddenSpy(&sub, SIGNAL(aboutToHide())); + QSignalSpy spy(action, &QAction::triggered); + QSignalSpy menuShownSpy(&sub, &QMenu::aboutToShow); + QSignalSpy menuHiddenSpy(&sub, &QMenu::aboutToHide); QVERIFY(QTest::qWaitForWindowExposed(&menu)); + QWindow *menuWindow = menu.windowHandle(); + QVERIFY(menuWindow); //go over the submenu, press, move and release over the top level action //this opens the submenu, move two times to emulate user interaction (d->motions > 0 in QMenu) - QTest::mouseMove(&menu, menu.rect().center() + QPoint(0,2)); - QTest::mouseMove(&menu, menu.rect().center() + QPoint(1,3), 60); + QTest::mouseMove(menuWindow, menu.rect().center() + QPoint(0,2)); + QTest::mouseMove(menuWindow, menu.rect().center() + QPoint(1,3), 60); QVERIFY(menuShownSpy.wait()); QVERIFY(sub.isVisible()); QVERIFY(QTest::qWaitForWindowExposed(&sub)); //press over the submenu entry - QTest::mousePress(&menu, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300); + QTest::mousePress(menuWindow, Qt::LeftButton, 0, menu.rect().center() + QPoint(0,2), 300); //move over the main action - QTest::mouseMove(&menu, menu.rect().center() - QPoint(0,2)); + 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(&menu, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300); + QTest::mouseRelease(menuWindow, Qt::LeftButton, 0, menu.rect().center() - QPoint(0,2), 300); QCOMPARE(spy.count(), 1); } #endif @@ -1210,7 +1211,7 @@ public: setMouseTracking(true); } - bool event(QEvent *e) Q_DECL_OVERRIDE + bool event(QEvent *e) override { switch (e->type()) { case QEvent::MouseMove: @@ -1231,79 +1232,99 @@ public: int move, enter, leave; }; -#ifndef QT_NO_CURSOR void tst_QMenu::QTBUG47515_widgetActionEnterLeave() { +#if !QT_CONFIG(cursor) + QSKIP("This test requires QCursor API"); +#else if (QGuiApplication::platformName() == QLatin1String("cocoa")) - QSKIP("This test fails on OS X on CI"); + QSKIP("See QTBUG-63031"); - const QPoint center = QGuiApplication::primaryScreen()->availableGeometry().center(); - const QPoint cursorPos = center - QPoint(100, 100); + QPoint screenCenter = QGuiApplication::primaryScreen()->availableGeometry().center(); + QPoint pointOutsideMenu = screenCenter - QPoint(100, 100); - QScopedPointer<QMenu> menu1(new QMenu("Menu1")); - QScopedPointer<QMenu> menu2(new QMenu("Menu2")); + QMenu menu("Menu1"); + QMenu submenu("Menu2"); - QWidgetAction *wA1 = new QWidgetAction(menu1.data()); - MyWidget *w1 = new MyWidget(menu1.data()); - wA1->setDefaultWidget(w1); + QWidgetAction menuAction(&menu); + MyWidget w1(&menu); + menuAction.setDefaultWidget(&w1); - QWidgetAction *wA2 = new QWidgetAction(menu2.data()); - MyWidget *w2 = new MyWidget(menu2.data()); - wA2->setDefaultWidget(w2); + QWidgetAction submenuAction(&submenu); + MyWidget w2(&submenu); + submenuAction.setDefaultWidget(&w2); - QAction *nextMenuAct = menu1->addMenu(menu2.data()); + QAction *nextMenuAct = menu.addMenu(&submenu); - menu1->addAction(wA1); - menu2->addAction(wA2); + menu.addAction(&menuAction); + submenu.addAction(&submenuAction); // Root menu { - QCursor::setPos(cursorPos); - QCoreApplication::processEvents(); - - menu1->popup(center); - QVERIFY(QTest::qWaitForWindowExposed(menu1.data())); + QCursor::setPos(pointOutsideMenu); + QTRY_COMPARE(QCursor::pos(), pointOutsideMenu); + menu.popup(screenCenter); + QVERIFY(QTest::qWaitForWindowExposed(&menu)); - QCursor::setPos(w1->mapToGlobal(w1->rect().center())); - QVERIFY(w1->isVisible()); - QTRY_COMPARE(w1->leave, 0); - QTRY_COMPARE(w1->enter, 1); + w1.enter = 0; + w1.leave = 0; + QPoint w1Center = w1.rect().center(); + const QPoint w1CenterGlobal = w1.mapToGlobal(w1Center); + QCursor::setPos(w1CenterGlobal); + QTRY_COMPARE(QCursor::pos(), w1CenterGlobal); + QVERIFY(w1.isVisible()); + QTRY_COMPARE(w1.leave, 0); + QTRY_COMPARE(w1.enter, 1); // Check whether leave event is not delivered on mouse move - w1->move = 0; - QCursor::setPos(w1->mapToGlobal(w1->rect().center()) + QPoint(1, 1)); - QTRY_COMPARE(w1->move, 1); - QTRY_COMPARE(w1->leave, 0); - QTRY_COMPARE(w1->enter, 1); - - QCursor::setPos(cursorPos); - QTRY_COMPARE(w1->leave, 1); - QTRY_COMPARE(w1->enter, 1); + w1.move = 0; + QWidget *nativeParent = w1.nativeParentWidget(); + QVERIFY(nativeParent); + QWindow *window = nativeParent->windowHandle(); + QVERIFY(window); + QTest::mouseMove(window, w1.mapTo(nativeParent, w1Center + QPoint(1, 1))); + QTRY_COMPARE(w1.move, 1); + QTRY_COMPARE(w1.leave, 0); + QTRY_COMPARE(w1.enter, 1); + + QCursor::setPos(pointOutsideMenu); + QTRY_COMPARE(QCursor::pos(), pointOutsideMenu); + QTRY_COMPARE(w1.leave, 1); + QTRY_COMPARE(w1.enter, 1); } // Submenu { - menu1->setActiveAction(nextMenuAct); - QVERIFY(QTest::qWaitForWindowExposed(menu2.data())); + menu.setActiveAction(nextMenuAct); + QVERIFY(QTest::qWaitForWindowExposed(&submenu)); - QCursor::setPos(w2->mapToGlobal(w2->rect().center())); - QVERIFY(w2->isVisible()); - QTRY_COMPARE(w2->leave, 0); - QTRY_COMPARE(w2->enter, 1); + QPoint w2Center = w2.rect().center(); + const QPoint w2CenterGlobal = w2.mapToGlobal(w2Center); + QCursor::setPos(w2CenterGlobal); + QTRY_COMPARE(QCursor::pos(), w2CenterGlobal); + + QVERIFY(w2.isVisible()); + QTRY_COMPARE(w2.leave, 0); + QTRY_COMPARE(w2.enter, 1); // Check whether leave event is not delivered on mouse move - w2->move = 0; - QCursor::setPos(w2->mapToGlobal(w2->rect().center()) + QPoint(1, 1)); - QTRY_COMPARE(w2->move, 1); - QTRY_COMPARE(w2->leave, 0); - QTRY_COMPARE(w2->enter, 1); - - QCursor::setPos(cursorPos); - QTRY_COMPARE(w2->leave, 1); - QTRY_COMPARE(w2->enter, 1); + w2.move = 0; + QWidget *nativeParent = w2.nativeParentWidget(); + QVERIFY(nativeParent); + QWindow *window = nativeParent->windowHandle(); + QVERIFY(window); + QTest::mouseMove(window, w2.mapTo(nativeParent, w2Center + QPoint(1, 1))); + QTRY_COMPARE(w2.move, 1); + QTRY_COMPARE(w2.leave, 0); + QTRY_COMPARE(w2.enter, 1); + + QCursor::setPos(pointOutsideMenu); + QTRY_COMPARE(QCursor::pos(), pointOutsideMenu); + QTRY_COMPARE(w2.leave, 1); + QTRY_COMPARE(w2.enter, 1); } +#endif // QT_NO_CURSOR } -#endif // !QT_NO_CURSOR class MyMenu : public QMenu { @@ -1518,7 +1539,7 @@ void tst_QMenu::menuSize_Scrolling() ~TestMenu() {} private: - void showEvent(QShowEvent *e) Q_DECL_OVERRIDE + void showEvent(QShowEvent *e) override { QVERIFY(actions().length() == m_numItems); diff --git a/tests/auto/widgets/widgets/qmenubar/BLACKLIST b/tests/auto/widgets/widgets/qmenubar/BLACKLIST index e2194e69ca..9b8e07312d 100644 --- a/tests/auto/widgets/widgets/qmenubar/BLACKLIST +++ b/tests/auto/widgets/widgets/qmenubar/BLACKLIST @@ -1,3 +1,5 @@ [check_menuPosition] -ubuntu-14.04 ubuntu-16.04 +#QTBUG-66255 +[activatedCount] +* diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp index 417fa9befa..ab82268578 100644 --- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp @@ -136,7 +136,7 @@ private slots: void task223138_triggered(); void task256322_highlight(); void menubarSizeHint(); -#ifndef Q_OS_MAC +#ifndef Q_OS_MACOS void taskQTBUG4965_escapeEaten(); #endif void taskQTBUG11823_crashwithInvisibleActions(); @@ -148,11 +148,12 @@ private slots: void taskQTBUG56275_reinsertMenuInParentlessQMenuBar(); void QTBUG_57404_existingMenuItemException(); #endif + void QTBUG_25669_menubarActionDoubleTriggered(); void taskQTBUG55966_subMenuRemoved(); void QTBUG_58344_invalidIcon(); - void platformMenu(); - + void addActionQt5connect(); + void QTBUG_65488_hiddenActionTriggered(); protected slots: void onSimpleActivated( QAction*); void onComplexActionTriggered(); @@ -1376,7 +1377,7 @@ void tst_QMenuBar::menubarSizeHint() } // On Mac, do not test the menubar with escape key -#ifndef Q_OS_MAC +#ifndef Q_OS_MACOS void tst_QMenuBar::taskQTBUG4965_escapeEaten() { QMenuBar menubar; @@ -1549,7 +1550,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() //set the new parent, a window QScopedPointer<QWidget> windowedParent; - windowedParent.reset(new QWidget(Q_NULLPTR, Qt::WindowFlags())); + windowedParent.reset(new QWidget(nullptr, Qt::WindowFlags())); windowedParent->setGeometry(400, 10, 300, 300); windowedParent->show(); @@ -1566,7 +1567,7 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() //to windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar movingParent.setParent(windowedParent.data(),0); // this resets the parenting and the menu bar's window - taskQTBUG53205MenuBar->setParent(Q_NULLPTR); + taskQTBUG53205MenuBar->setParent(nullptr); taskQTBUG53205MenuBar->setParent(&containedWidget); //from windowedParent<-movingParent<-containerWidget<-containedWidget<-menuBar //to : QMainWindow<-hiddenParent<-movingParent<-containerWidget<-containedWidget<-menuBar @@ -1576,6 +1577,25 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() testMenus.actions[0]->trigger(); } +void tst_QMenuBar::QTBUG_65488_hiddenActionTriggered() +{ + QMainWindow win; + win.menuBar()->setNativeMenuBar(false); + QAction *act1 = win.menuBar()->addAction("A very long named action that make menuBar item wide enough"); + QSignalSpy spy(win.menuBar(), &QMenuBar::triggered); + + QRect actRect = win.menuBar()->actionGeometry(act1); + // resize to action's size to make Action1 hidden + win.resize(actRect.width() - 10, win.size().height()); + win.show(); + QApplication::setActiveWindow(&win); + QVERIFY(QTest::qWaitForWindowExposed(&win)); + // click center of the blank area on the menubar where Action1 resided + QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, win.menuBar()->geometry().center()); + QCoreApplication::sendPostedEvents(); // make sure all queued events also dispatched + QCOMPARE(spy.count(), 0); +} + // QTBUG-56526 void tst_QMenuBar::platformMenu() { @@ -1595,10 +1615,71 @@ void tst_QMenuBar::platformMenu() QVERIFY(menu->platformMenu()); } +class TestObject : public QObject +{ + Q_OBJECT +public: + bool flag = false; + void setFlag() + { + flag = true; + } +}; + +void tst_QMenuBar::addActionQt5connect() +{ + bool flag = false; + auto functor = [&flag](){ flag = true; }; + + TestObject obj; + + QMenuBar menuBar; + + auto action1 = menuBar.addAction(QStringLiteral("1"), &obj, &TestObject::setFlag); + auto action2 = menuBar.addAction(QStringLiteral("2"), functor); + + action1->activate(QAction::Trigger); + action2->activate(QAction::Trigger); + + QVERIFY(obj.flag); + QVERIFY(flag); + + flag = false; + + auto action3 = menuBar.addAction(QStringLiteral("3"), this, functor); + action3->activate(QAction::Trigger); + QVERIFY(flag); +} + +void tst_QMenuBar::QTBUG_25669_menubarActionDoubleTriggered() +{ + QMainWindow win; + win.menuBar()->setNativeMenuBar(false); + QAction *act1 = win.menuBar()->addAction("Action1"); + QAction *act2 = win.menuBar()->addAction("Action2"); + QSignalSpy spy(win.menuBar(), &QMenuBar::triggered); + + win.show(); + QApplication::setActiveWindow(&win); + QVERIFY(QTest::qWaitForWindowExposed(&win)); + + QPoint posAct1 = menuBarActionWindowPos(win.menuBar(), act1); + QPoint posAct2 = menuBarActionWindowPos(win.menuBar(), act2); + + QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct1); + QTRY_COMPARE(spy.count(), 1); + + QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct2); + QTRY_COMPARE(spy.count(), 2); + + QTest::mouseClick(win.windowHandle(), Qt::LeftButton, Qt::NoModifier, posAct2); + QTRY_COMPARE(spy.count(), 3); +} + void tst_QMenuBar::slotForTaskQTBUG53205() { QWidget *parent = taskQTBUG53205MenuBar->parentWidget(); - taskQTBUG53205MenuBar->setParent(Q_NULLPTR); + taskQTBUG53205MenuBar->setParent(nullptr); taskQTBUG53205MenuBar->setParent(parent); } diff --git a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST index 7825c33a0a..b67c8354e8 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST +++ b/tests/auto/widgets/widgets/qopenglwidget/BLACKLIST @@ -1,18 +1,5 @@ [clearAndGrab] -opensuse-13.1 ubuntu -#QTBUG-31611 -[painter] -windows msvc-2010 32bit developer-build - -#QTBUG-31611 -[reparentToAlreadyCreated] -windows msvc-2010 32bit developer-build - -#QTBUG-31611 -[reparentToNotYetCreated] -windows msvc-2010 32bit developer-build - [stackWidgetOpaqueChildIsVisible] windows diff --git a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp index 49291cf5f9..db125f6644 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp +++ b/tests/auto/widgets/widgets/qopenglwidget/tst_qopenglwidget.cpp @@ -100,16 +100,16 @@ public: m_w(expectedWidth), m_h(expectedHeight), r(1.0f), g(0.0f), b(0.0f) { } - void initializeGL() Q_DECL_OVERRIDE { + void initializeGL() override { m_initCalled = true; initializeOpenGLFunctions(); } - void paintGL() Q_DECL_OVERRIDE { + void paintGL() override { m_paintCalled = true; glClearColor(r, g, b, 1.0f); glClear(GL_COLOR_BUFFER_BIT); } - void resizeGL(int w, int h) Q_DECL_OVERRIDE { + void resizeGL(int w, int h) override { m_resizeCalled = true; m_resizeOk = w == m_w && h == m_h; } @@ -203,10 +203,10 @@ public: PainterWidget(QWidget *parent) : QOpenGLWidget(parent), m_clear(false) { } - void initializeGL() Q_DECL_OVERRIDE { + void initializeGL() override { initializeOpenGLFunctions(); } - void paintGL() Q_DECL_OVERRIDE { + void paintGL() override { QPainter p(this); QCOMPARE(p.device()->width(), width()); QCOMPARE(p.device()->height(), height()); @@ -322,7 +322,7 @@ public: void resetPaintCount() { m_count = 0; } protected: - void drawForeground(QPainter *, const QRectF &) Q_DECL_OVERRIDE; + void drawForeground(QPainter *, const QRectF &) override; int m_count; }; @@ -372,7 +372,7 @@ class PaintCountWidget : public QOpenGLWidget public: PaintCountWidget() : m_count(0) { } void reset() { m_count = 0; } - void paintGL() Q_DECL_OVERRIDE { ++m_count; } + void paintGL() override { ++m_count; } int m_count; }; @@ -393,7 +393,7 @@ void tst_QOpenGLWidget::requestUpdate() class FboCheckWidget : public QOpenGLWidget { public: - void paintGL() Q_DECL_OVERRIDE { + void paintGL() override { GLuint reportedDefaultFbo = QOpenGLContext::currentContext()->defaultFramebufferObject(); GLuint expectedDefaultFbo = defaultFramebufferObject(); QCOMPARE(reportedDefaultFbo, expectedDefaultFbo); diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp index af0ad1a601..a08a8862b8 100644 --- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp +++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp @@ -870,7 +870,7 @@ void tst_QPlainTextEdit::lineWrapModes() // QPlainTextEdit does lazy line layout on resize, only for the visible blocks. // We thus need to make it wide enough to show something visible. int minimumWidth = 2 * ed->document()->documentMargin(); - minimumWidth += ed->fontMetrics().width(QLatin1Char('a')); + minimumWidth += ed->fontMetrics().horizontalAdvance(QLatin1Char('a')); minimumWidth += ed->frameWidth(); ed->resize(minimumWidth, 1000); QCOMPARE(lineCount(), 26); diff --git a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp index 9f64335930..35209c2501 100644 --- a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp +++ b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp @@ -293,7 +293,7 @@ void tst_QProgressBar::sizeHint() QFontMetrics fm = bar.fontMetrics(); QStyleOptionProgressBar opt; bar.initStyleOption(&opt); - QSize size = QSize(9 * 7 + fm.width(QLatin1Char('0')) * 4, fm.height() + 8); + QSize size = QSize(9 * 7 + fm.horizontalAdvance(QLatin1Char('0')) * 4, fm.height() + 8); size= bar.style()->sizeFromContents(QStyle::CT_ProgressBar, &opt, size, &bar); QSize barSize = bar.sizeHint(); QVERIFY(barSize.width() >= size.width()); diff --git a/tests/auto/widgets/widgets/qscrollbar/BLACKLIST b/tests/auto/widgets/widgets/qscrollbar/BLACKLIST new file mode 100644 index 0000000000..277ae4d260 --- /dev/null +++ b/tests/auto/widgets/widgets/qscrollbar/BLACKLIST @@ -0,0 +1,3 @@ +#QTBUG-66321 +[QTBUG_42871] +macos diff --git a/tests/auto/widgets/widgets/qspinbox/BLACKLIST b/tests/auto/widgets/widgets/qspinbox/BLACKLIST deleted file mode 100644 index 5bf6c3beed..0000000000 --- a/tests/auto/widgets/widgets/qspinbox/BLACKLIST +++ /dev/null @@ -1,3 +0,0 @@ -[editingFinished] -osx-10.8 -osx-10.9 diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index aef4046afe..cad7bd69d7 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -299,7 +299,7 @@ class TestSplitterStyle : public QProxyStyle { public: TestSplitterStyle() : handleWidth(5) {} - int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const override { if (metric == QStyle::PM_SplitterWidth) return handleWidth; @@ -658,13 +658,34 @@ public: class EventCounterSpy : public QObject { public: - EventCounterSpy(QWidget *parentWidget) : QObject(parentWidget) + EventCounterSpy(QWidget *obj) : objectToWatch(obj) { } + ~EventCounterSpy() + { + removeEventFilter(); + } + + void installEventFilter() + { + if (needRemoveEventFilter) + return; + needRemoveEventFilter = true; + qApp->installEventFilter(this); + } + + void removeEventFilter() + { + if (!needRemoveEventFilter) + return; + needRemoveEventFilter = false; + qApp->removeEventFilter(this); + } + bool eventFilter(QObject *watched, QEvent *event) override { // Watch for events in the parent widget and all its children - if (watched == parent() || watched->parent() == parent()) { + if (watched == objectToWatch || watched->parent() == objectToWatch) { if (event->type() == QEvent::Resize) resizeCount++; else if (event->type() == QEvent::Paint) @@ -676,6 +697,8 @@ public: int resizeCount = 0; int paintCount = 0; + bool needRemoveEventFilter = false; + QObject *objectToWatch; }; void tst_QSplitter::replaceWidget_data() @@ -733,31 +756,30 @@ void tst_QSplitter::replaceWidget() // to set a shorter label. QLabel *newWidget = new QLabel(QLatin1String("<b>NEW</b>")); - EventCounterSpy *ef = new EventCounterSpy(&sp); - qApp->installEventFilter(ef); + EventCounterSpy ef(&sp); + ef.installEventFilter(); const QWidget *res = sp.replaceWidget(index, newWidget); QTest::qWait(100); // Give visibility and resizing some time - qApp->removeEventFilter(ef); // Check if (index < 0 || index >= count) { QVERIFY(!res); QVERIFY(!newWidget->parentWidget()); - QCOMPARE(ef->resizeCount, 0); - QCOMPARE(ef->paintCount, 0); + QCOMPARE(ef.resizeCount, 0); + QCOMPARE(ef.paintCount, 0); } else { QCOMPARE(res, oldWidget); QVERIFY(!res->parentWidget()); QVERIFY(!res->isVisible()); + const int expectedResizeCount = visible ? 1 : 0; // new widget only + const int expectedPaintCount = visible && !collapsed ? 2 : 0; // splitter and new widget + QTRY_COMPARE(ef.resizeCount, expectedResizeCount); + QTRY_COMPARE(ef.paintCount, expectedPaintCount); QCOMPARE(newWidget->parentWidget(), &sp); QCOMPARE(newWidget->isVisible(), visible); if (visible && !collapsed) QCOMPARE(newWidget->geometry(), oldGeom); QCOMPARE(newWidget->size().isEmpty(), !visible || collapsed); - const int expectedResizeCount = visible ? 1 : 0; // new widget only - const int expectedPaintCount = visible && !collapsed ? 2 : 0; // splitter and new widget - QCOMPARE(ef->resizeCount, expectedResizeCount); - QCOMPARE(ef->paintCount, expectedPaintCount); delete res; } QCOMPARE(sp.count(), count); @@ -797,25 +819,24 @@ void tst_QSplitter::replaceWidgetWithSplitterChild() const QList<int> sizes = sp.sizes(); QWidget *sibling = srcIndex == -1 ? (new QLabel("<b>NEW</b>", &sp)) : sp.widget(srcIndex); - EventCounterSpy *ef = new EventCounterSpy(&sp); - qApp->installEventFilter(ef); + EventCounterSpy ef(&sp); + ef.installEventFilter(); const QWidget *res = sp.replaceWidget(dstIndex, sibling); QTest::qWait(100); // Give visibility and resizing some time - qApp->removeEventFilter(ef); QVERIFY(!res); if (srcIndex == -1) { // Create and replace before recalc. The sibling is scheduled to be // added after replaceWidget(), when QSplitter receives a child event. - QVERIFY(ef->resizeCount > 0); - QVERIFY(ef->paintCount > 0); + QTRY_VERIFY(ef.resizeCount > 0); + QTRY_VERIFY(ef.paintCount > 0); QCOMPARE(sp.count(), count + 1); QCOMPARE(sp.sizes().mid(0, count), sizes); QCOMPARE(sp.sizes().last(), sibling->width()); } else { // No-op for the rest - QCOMPARE(ef->resizeCount, 0); - QCOMPARE(ef->paintCount, 0); + QCOMPARE(ef.resizeCount, 0); + QCOMPARE(ef.paintCount, 0); QCOMPARE(sp.count(), count); QCOMPARE(sp.sizes(), sizes); } diff --git a/tests/auto/widgets/widgets/qtabbar/BLACKLIST b/tests/auto/widgets/widgets/qtabbar/BLACKLIST index 5a3f33e3e4..735b044d8b 100644 --- a/tests/auto/widgets/widgets/qtabbar/BLACKLIST +++ b/tests/auto/widgets/widgets/qtabbar/BLACKLIST @@ -1,3 +1,2 @@ [sizeHints] -ubuntu-14.04 redhatenterpriselinuxworkstation-6.6 |