diff options
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 193 |
1 files changed, 151 insertions, 42 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 6a049aedf1..360e6986f6 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -188,7 +188,8 @@ private slots: void reverseTabOrder(); void tabOrderWithProxy(); void tabOrderWithCompoundWidgets(); -#ifdef Q_OS_WIN + void tabOrderNoChange(); +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void activation(); #endif void reparent(); @@ -416,8 +417,7 @@ private: bool tst_QWidget::ensureScreenSize(int width, int height) { - QSize available; - available = QDesktopWidget().availableGeometry().size(); + const QSize available = QGuiApplication::primaryScreen()->availableGeometry().size(); return (available.width() >= width && available.height() >= height); } @@ -1426,7 +1426,7 @@ void tst_QWidget::mapFromAndTo() subWindow2->setGeometry(75, 75, 100, 100); subSubWindow->setGeometry(10, 10, 10, 10); -#if !defined(Q_OS_QNX) +#if !defined(Q_OS_QNX) && !defined(Q_OS_WINRT) //update visibility if (windowMinimized) { if (!windowHidden) { @@ -1931,7 +1931,35 @@ void tst_QWidget::tabOrderWithCompoundWidgets() QVERIFY(lastEdit->hasFocus()); } -#ifdef Q_OS_WIN +static QVector<QWidget*> getFocusChain(QWidget *start, bool bForward) +{ + QVector<QWidget*> ret; + QWidget *cur = start; + do { + ret += cur; + auto widgetPrivate = static_cast<QWidgetPrivate *>(qt_widget_private(cur)); + cur = bForward ? widgetPrivate->focus_next : widgetPrivate->focus_prev; + } while (cur != start); + return ret; +} + +void tst_QWidget::tabOrderNoChange() +{ + QWidget w; + auto *verticalLayout = new QVBoxLayout(&w); + auto *tabWidget = new QTabWidget(&w); + auto *tv = new QTreeView(tabWidget); + tabWidget->addTab(tv, QStringLiteral("Tab 1")); + verticalLayout->addWidget(tabWidget); + + const auto focusChainForward = getFocusChain(&w, true); + const auto focusChainBackward = getFocusChain(&w, false); + QWidget::setTabOrder(tabWidget, tv); + QCOMPARE(focusChainForward, getFocusChain(&w, true)); + QCOMPARE(focusChainBackward, getFocusChain(&w, false)); +} + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void tst_QWidget::activation() { Q_CHECK_PAINTEVENTS @@ -1976,7 +2004,8 @@ void tst_QWidget::windowState() QPoint pos; QSize size = m_testWidgetSize; if (QGuiApplicationPrivate::platformIntegration()->defaultWindowState(Qt::Widget) - == Qt::WindowFullScreen) { + == Qt::WindowFullScreen + || m_platform == QStringLiteral("winrt")) { size = QGuiApplication::primaryScreen()->size(); } else { pos = QPoint(10, 10); @@ -2181,8 +2210,8 @@ void tst_QWidget::showFullScreen() QSKIP("QTBUG-52974"); #endif - if (m_platform == QStringLiteral("wayland")) - QSKIP("Wayland: This fails. Figure out why."); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT: This fails. QTBUG-68297"); QWidget plain; QHBoxLayout *layout; QWidget layouted; @@ -2304,6 +2333,8 @@ void tst_QWidget::resizeEvent() wTopLevel.resize(200, 200); wTopLevel.show(); QVERIFY(QTest::qWaitForWindowExposed(&wTopLevel)); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support resize", Abort); QCOMPARE (wTopLevel.m_resizeEventCount, 1); // initial resize event before paint for toplevels wTopLevel.hide(); QSize safeSize(640,480); @@ -2319,6 +2350,12 @@ void tst_QWidget::resizeEvent() void tst_QWidget::showMinimized() { + if (m_platform == QStringLiteral("wayland")) { + QSKIP("Wayland: Neither xdg_shell, wl_shell or ivi_application support " + "letting a client know whether it's minimized. So on these shells " + "Qt Wayland will always report that it's unmimized."); + } + QWidget plain; plain.move(100, 100); plain.resize(200, 200); @@ -2327,6 +2364,9 @@ void tst_QWidget::showMinimized() plain.showMinimized(); QVERIFY(plain.isMinimized()); QVERIFY(plain.isVisible()); +#ifdef Q_OS_WINRT + QEXPECT_FAIL("", "Winrt does not support move and resize", Abort); +#endif QCOMPARE(plain.pos(), pos); plain.showNormal(); @@ -2478,11 +2518,15 @@ void tst_QWidget::showMinimizedKeepsFocus() #ifdef Q_OS_OSX if (!macHasAccessToWindowsServer()) QEXPECT_FAIL("", "When not having WindowServer access, we lose focus.", Continue); +#elif defined(Q_OS_WINRT) + QEXPECT_FAIL("", "Winrt fails here - QTBUG-68297", Continue); #endif QTRY_COMPARE(window.focusWidget(), firstchild); #ifdef Q_OS_OSX if (!macHasAccessToWindowsServer()) QEXPECT_FAIL("", "When not having WindowServer access, we lose focus.", Continue); +#elif defined(Q_OS_WINRT) + QEXPECT_FAIL("", "Winrt fails here - QTBUG-68297", Continue); #endif QTRY_COMPARE(qApp->focusWidget(), firstchild); } @@ -2513,6 +2557,9 @@ void tst_QWidget::reparent() parent.show(); childTLW.show(); +#ifdef Q_OS_WINRT + QEXPECT_FAIL("", "WinRT does not support more than 1 top level widget", Abort); +#endif QVERIFY(QTest::qWaitForWindowExposed(&parent)); parent.move(parentPosition); @@ -2610,6 +2657,8 @@ void tst_QWidget::normalGeometry() if (m_platform == QStringLiteral("wayland")) QSKIP("Wayland: This fails. Figure out why."); + else if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT: This fails. Figure out why - QTBUG-68297."); QWidget parent; parent.setWindowTitle("NormalGeometry parent"); QWidget *child = new QWidget(&parent); @@ -2719,12 +2768,14 @@ void tst_QWidget::setGeometry() tlw.setGeometry(tr); child.setGeometry(cr); tlw.showNormal(); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support setGeometry", Abort); QTRY_COMPARE(tlw.geometry().size(), tr.size()); QCOMPARE(child.geometry(), cr); tlw.setParent(0, Qt::Window|Qt::FramelessWindowHint); tr = QRect(0,0,100,100); - tr.moveTopLeft(QApplication::desktop()->availableGeometry().topLeft()); + tr.moveTopLeft(QGuiApplication::primaryScreen()->availableGeometry().topLeft()); tlw.setGeometry(tr); QCOMPARE(tlw.geometry(), tr); tlw.showNormal(); @@ -3198,6 +3249,8 @@ void tst_QWidget::saveRestoreGeometry() QVERIFY(QTest::qWaitForWindowExposed(&widget)); QApplication::processEvents(); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support move/resize", Abort); QTRY_COMPARE(widget.pos(), position); QCOMPARE(widget.size(), size); savedGeometry = widget.saveGeometry(); @@ -3338,6 +3391,7 @@ void tst_QWidget::restoreVersion1Geometry() QFETCH(QString, fileName); QFETCH(uint, expectedWindowState); QFETCH(QPoint, expectedPosition); + Q_UNUSED(expectedPosition); QFETCH(QSize, expectedSize); QFETCH(QRect, expectedNormalGeometry); @@ -3357,28 +3411,28 @@ void tst_QWidget::restoreVersion1Geometry() QCOMPARE(uint(widget.windowState() & WindowStateMask), expectedWindowState); if (expectedWindowState == Qt::WindowNoState) { - QCOMPARE(widget.pos(), expectedPosition); + QTRY_COMPARE(widget.geometry(), expectedNormalGeometry); QCOMPARE(widget.size(), expectedSize); } + widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); QTest::qWait(100); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support restoreGeometry", Abort); + if (expectedWindowState == Qt::WindowNoState) { - QTRY_COMPARE(widget.pos(), expectedPosition); QTRY_COMPARE(widget.size(), expectedSize); + QCOMPARE(widget.geometry(), expectedNormalGeometry); } widget.showNormal(); QTest::qWait(10); - if (expectedWindowState != Qt::WindowNoState) { - // restoring from maximized or fullscreen, we can only restore to the normal geometry - QTRY_COMPARE(widget.geometry(), expectedNormalGeometry); - } else { - QTRY_COMPARE(widget.pos(), expectedPosition); - QTRY_COMPARE(widget.size(), expectedSize); - } + QTRY_COMPARE(widget.geometry(), expectedNormalGeometry); + if (expectedWindowState == Qt::WindowNoState) + QCOMPARE(widget.size(), expectedSize); #if 0 // Code for saving a new geometry*.dat files @@ -3413,6 +3467,8 @@ void tst_QWidget::widgetAt() QSKIP("Wayland: This fails. Figure out why."); if (m_platform == QStringLiteral("offscreen")) QSKIP("Platform offscreen does not support lower()/raise() or WindowMasks"); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support more than 1 top level widget"); Q_CHECK_PAINTEVENTS @@ -3714,6 +3770,8 @@ void tst_QWidget::optimizedResizeMove() staticWidget.gotPaintEvent = false; staticWidget.move(staticWidget.pos() + QPoint(10, 10)); QTest::qWait(20); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support move/resize", Abort); QCOMPARE(staticWidget.gotPaintEvent, false); staticWidget.gotPaintEvent = false; @@ -3798,9 +3856,10 @@ void tst_QWidget::optimizedResize_topLevel() // a native function call works (it basically has to go through // WM_RESIZE in QApplication). This is a corner case, though. // See task 243708 - const QRect frame = topLevel.frameGeometry(); - MoveWindow(winHandleOf(&topLevel), frame.x(), frame.y(), - frame.width() + 10, frame.height() + 10, + RECT rect; + GetWindowRect(winHandleOf(&topLevel), &rect); + MoveWindow(winHandleOf(&topLevel), rect.left, rect.top, + rect.right - rect.left + 10, rect.bottom - rect.top + 10, true); QTest::qWait(100); #endif @@ -3812,6 +3871,8 @@ void tst_QWidget::optimizedResize_topLevel() QTRY_VERIFY(topLevel.gotPaintEvent); if (m_platform == QStringLiteral("xcb") || m_platform == QStringLiteral("offscreen")) QSKIP("QTBUG-26424"); + else if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support move/resize", Abort); QCOMPARE(topLevel.partial, true); QCOMPARE(topLevel.paintedRegion, expectedUpdateRegion); } @@ -3860,7 +3921,7 @@ void tst_QWidget::setMinimumSize() QSize nonDefaultSize = defaultSize + QSize(5,5); w.setMinimumSize(nonDefaultSize); w.showNormal(); - QVERIFY(QTest::qWaitForWindowActive(&w)); + QVERIFY(QTest::qWaitForWindowExposed(&w)); QVERIFY2(w.height() >= nonDefaultSize.height(), msgComparisonFailed(w.height(), ">=", nonDefaultSize.height())); QVERIFY2(w.width() >= nonDefaultSize.width(), @@ -3915,6 +3976,8 @@ void tst_QWidget::setFixedSize() QVERIFY(QTest::qWaitForWindowActive(&w)); if (m_platform == QStringLiteral("xcb")) QSKIP("QTBUG-26424"); + else if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support move/resize", Abort); QCOMPARE(w.size(), defaultSize + QSize(150,150)); } @@ -4115,6 +4178,8 @@ void tst_QWidget::transientParent() void tst_QWidget::showNativeChild() { + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support setGeometry"); QWidget topLevel; topLevel.setGeometry(QRect(m_availableTopLeft + QPoint(100, 100), m_testWidgetSize)); topLevel.setWindowTitle(__FUNCTION__); @@ -4297,6 +4362,8 @@ void tst_QWidget::update() // widgets are transparent by default, so both should get repaints { + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support setGeometry", Abort); QApplication::processEvents(); QApplication::processEvents(); QCOMPARE(child.numPaintEvents, 1); @@ -4518,8 +4585,9 @@ void tst_QWidget::scroll() { if (m_platform == QStringLiteral("wayland")) QSKIP("Wayland: This fails. Figure out why."); - const int w = qMin(500, qApp->desktop()->availableGeometry().width() / 2); - const int h = qMin(500, qApp->desktop()->availableGeometry().height() / 2); + QScreen *screen = QGuiApplication::primaryScreen(); + const int w = qMin(500, screen->availableGeometry().width() / 2); + const int h = qMin(500, screen->availableGeometry().height() / 2); UpdateWidget updateWidget; updateWidget.resize(w, h); @@ -4536,6 +4604,8 @@ void tst_QWidget::scroll() qApp->processEvents(); QRegion dirty(QRect(0, 0, w, 10)); dirty += QRegion(QRect(0, 10, 10, h - 10)); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT does not support move/resize", Abort); QTRY_COMPARE(updateWidget.paintedRegion, dirty); } @@ -4647,7 +4717,7 @@ void tst_QWidget::setWindowGeometry_data() QList<QList<QRect> > rects; const int width = m_testWidgetSize.width(); const int height = m_testWidgetSize.height(); - const QRect availableAdjusted = QApplication::desktop()->availableGeometry().adjusted(100, 100, -100, -100); + const QRect availableAdjusted = QGuiApplication::primaryScreen()->availableGeometry().adjusted(100, 100, -100, -100); rects << (QList<QRect>() << QRect(m_availableTopLeft + QPoint(100, 100), m_testWidgetSize) << availableAdjusted @@ -4711,6 +4781,8 @@ void tst_QWidget::setWindowGeometry() { if (m_platform == QStringLiteral("xcb")) QSKIP("X11: Skip this test due to Window manager positioning issues."); + else if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support setWindowGeometry"); QFETCH(QList<QRect>, rects); QFETCH(int, windowFlags); @@ -4877,6 +4949,8 @@ void tst_QWidget::windowMoveResize() QSKIP("X11: Skip this test due to Window manager positioning issues."); if (m_platform == QStringLiteral("wayland")) QSKIP("Wayland: This fails. Figure out why."); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support move/resize"); QFETCH(QList<QRect>, rects); QFETCH(int, windowFlags); @@ -5197,6 +5271,9 @@ void tst_QWidget::moveChild() QTRY_COMPARE(parent.r, QRegion(parent.rect()) - child.geometry()); QTRY_COMPARE(child.r, QRegion(child.rect())); + + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support setGeometry (and we cannot use QEXPECT_FAIL because of VERIFY_COLOR)"); VERIFY_COLOR(child, child.rect(), child.color); VERIFY_COLOR(parent, QRegion(parent.rect()) - child.geometry(), parent.color); @@ -5253,6 +5330,8 @@ void tst_QWidget::showAndMoveChild() child.move(desktopDimensions.width()/2, desktopDimensions.height()/2); qApp->processEvents(); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT does not support setGeometry (and we cannot use QEXPECT_FAIL because of VERIFY_COLOR)"); VERIFY_COLOR(child, child.rect(), Qt::blue); VERIFY_COLOR(parent, QRegion(parent.rect()) - child.geometry(), Qt::red); } @@ -5341,6 +5420,8 @@ void tst_QWidget::multipleToplevelFocusCheck() if (m_platform == QStringLiteral("wayland")) QSKIP("Wayland: This fails. Figure out why."); + else if (m_platform == QStringLiteral("winrt")) + QSKIP("Winrt: Sometimes crashes in QTextLayout. - QTBUG-68297"); TopLevelFocusCheck w1; TopLevelFocusCheck w2; @@ -5499,6 +5580,8 @@ void tst_QWidget::setFocus() testWidget->clearFocus(); child1.setFocus(); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT fails here - QTBUG-68297", Abort); QVERIFY(!child1.hasFocus()); QCOMPARE(window.focusWidget(), &child1); QCOMPARE(QApplication::focusWidget(), nullptr); @@ -6185,8 +6268,8 @@ QByteArray EventRecorder::msgEventListMismatch(const EventList &expected, const void tst_QWidget::childEvents() { - if (m_platform == QStringLiteral("wayland")) - QSKIP("Wayland: This fails. Figure out why."); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT: This fails. QTBUG-68297."); EventRecorder::EventList expected; // Move away the cursor; otherwise it might result in an enter event if it's @@ -6582,6 +6665,8 @@ void tst_QWidget::renderInvisible() { if (m_platform == QStringLiteral("xcb")) QSKIP("QTBUG-26424"); + if (m_platform == QStringLiteral("winrt")) + QSKIP("WinRT: This fails. QTBUG-68297."); QScopedPointer<QCalendarWidget> calendar(new QCalendarWidget); calendar->move(m_availableTopLeft + QPoint(100, 100)); @@ -7430,7 +7515,7 @@ void tst_QWidget::moveWindowInShowEvent_data() QTest::addColumn<QPoint>("initial"); QTest::addColumn<QPoint>("position"); - QPoint p = QApplication::desktop()->availableGeometry().topLeft(); + QPoint p = QGuiApplication::primaryScreen()->availableGeometry().topLeft(); QTest::newRow("1") << p << (p + QPoint(10, 10)); QTest::newRow("2") << (p + QPoint(10,10)) << p; @@ -7455,7 +7540,8 @@ void tst_QWidget::moveWindowInShowEvent() }; MoveWindowInShowEventWidget widget; - widget.resize(QSize(qApp->desktop()->availableGeometry().size() / 3).expandedTo(QSize(1, 1))); + QScreen *screen = QGuiApplication::primaryScreen(); + widget.resize(QSize(screen->availableGeometry().size() / 3).expandedTo(QSize(1, 1))); // move to this position in showEvent() widget.position = position; @@ -7524,6 +7610,8 @@ void tst_QWidget::hideOpaqueChildWhileHidden() child.hide(); child2.hide(); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QTRY_COMPARE(w.r, QRegion(child.geometry())); child.show(); @@ -7561,6 +7649,8 @@ void tst_QWidget::updateWhileMinimized() // Make sure update requests are discarded until the widget is shown again. widget.update(0, 0, 50, 50); QTest::qWait(10); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QCOMPARE(widget.numPaintEvents, 0); // Restore window. @@ -8088,6 +8178,8 @@ void tst_QWidget::doubleRepaint() #if defined(Q_OS_QNX) QEXPECT_FAIL("", "Platform does not support showMinimized()", Continue); #endif + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QCOMPARE(widget.numPaintEvents, 0); widget.numPaintEvents = 0; @@ -8105,7 +8197,7 @@ void tst_QWidget::resizeInPaintEvent() window.resize(200, 200); window.show(); qApp->setActiveWindow(&window); - QVERIFY(QTest::qWaitForWindowActive(&window)); + QVERIFY(QTest::qWaitForWindowExposed(&window)); QTRY_VERIFY(widget.numPaintEvents > 0); widget.reset(); @@ -8217,6 +8309,8 @@ void tst_QWidget::setMaskInResizeEvent() QRegion expectedParentUpdate(0, 0, 100, 10); // Old testWidget area. expectedParentUpdate += testWidget.geometry(); // New testWidget area. + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QTRY_COMPARE(w.paintedRegion, expectedParentUpdate); QTRY_COMPARE(testWidget.paintedRegion, testWidget.mask()); @@ -8645,7 +8739,7 @@ void tst_QWidget::translucentWidget() ColorRedWidget label; label.setFixedSize(16,16); label.setAttribute(Qt::WA_TranslucentBackground); - const QPoint labelPos = qApp->desktop()->availableGeometry().topLeft(); + const QPoint labelPos = QGuiApplication::primaryScreen()->availableGeometry().topLeft(); label.move(labelPos); label.show(); QVERIFY(QTest::qWaitForWindowExposed(&label)); @@ -8661,6 +8755,8 @@ void tst_QWidget::translucentWidget() widgetSnapshot = label.grab(QRect(QPoint(0, 0), label.size())); const QImage actual = widgetSnapshot.toImage().convertToFormat(QImage::Format_RGB32); const QImage expected = pm.toImage().scaled(label.devicePixelRatioF() * pm.size()); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QCOMPARE(actual.size(),expected.size()); QCOMPARE(actual,expected); } @@ -8704,7 +8800,7 @@ void tst_QWidget::setClearAndResizeMask() centerOnScreen(&topLevel); topLevel.show(); qApp->setActiveWindow(&topLevel); - QVERIFY(QTest::qWaitForWindowActive(&topLevel)); + QVERIFY(QTest::qWaitForWindowExposed(&topLevel)); QTRY_VERIFY(topLevel.numPaintEvents > 0); topLevel.reset(); @@ -9104,7 +9200,7 @@ void tst_QWidget::syntheticEnterLeave() void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave() { if (m_platform == QStringLiteral("wayland")) - QSKIP("Wayland: This fails. Figure out why."); + QSKIP("Wayland: Clients can't set cursor position on wayland."); class SELParent : public QWidget { public: @@ -9122,7 +9218,8 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave() void mouseMoveEvent(QMouseEvent *event) { QCOMPARE(event->button(), Qt::NoButton); - QCOMPARE(event->buttons(), Qt::MouseButtons(Qt::NoButton)); + QCOMPARE(event->buttons(), QApplication::mouseButtons()); + QCOMPARE(event->modifiers(), QApplication::keyboardModifiers()); ++numMouseMoveEvents; } void reset() { numEnterEvents = numMouseMoveEvents = 0; } @@ -9156,11 +9253,11 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave() child.setMouseTracking(true); child.show(); - // Make sure the child gets enter event and mouse move event. + // Make sure the child gets enter event. // Note that we verify event->button() and event->buttons() // in SELChild::mouseMoveEvent(). QTRY_COMPARE(child.numEnterEvents, 1); - QCOMPARE(child.numMouseMoveEvents, 1); + QCOMPARE(child.numMouseMoveEvents, 0); // Sending synthetic enter/leave trough the parent's mousePressEvent handler. parent.child = &child; @@ -9169,12 +9266,21 @@ void tst_QWidget::taskQTBUG_4055_sendSyntheticEnterLeave() child.reset(); QTest::mouseClick(&parent, Qt::LeftButton); - // Make sure the child gets enter event and one mouse move event. + // Make sure the child gets enter event. QTRY_COMPARE(child.numEnterEvents, 1); - QCOMPARE(child.numMouseMoveEvents, 1); + QCOMPARE(child.numMouseMoveEvents, 0); child.hide(); child.reset(); + QTest::keyPress(&parent, Qt::Key_Shift); + QTest::mouseClick(&parent, Qt::LeftButton); + + // Make sure the child gets enter event + QTRY_COMPARE(child.numEnterEvents, 1); + QCOMPARE(child.numMouseMoveEvents, 0); + QTest::keyRelease(&child, Qt::Key_Shift); + child.hide(); + child.reset(); child.setMouseTracking(false); QTest::mouseClick(&parent, Qt::LeftButton); @@ -9351,6 +9457,8 @@ void tst_QWidget::rectOutsideCoordinatesLimit_task144779() correct.fill(Qt::green); const QPixmap mainPixmap = grabFromWidget(&main, QRect(QPoint(0, 0), QSize(-1, -1))); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QTRY_COMPARE(mainPixmap.toImage().convertToFormat(QImage::Format_RGB32), correct.toImage().convertToFormat(QImage::Format_RGB32)); #ifndef QT_NO_CURSOR @@ -9442,6 +9550,8 @@ void tst_QWidget::activateWindow() qApp->processEvents(); QTRY_VERIFY(mainwindow->isActiveWindow()); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QTRY_VERIFY(!mainwindow2->isActiveWindow()); } @@ -9960,9 +10070,6 @@ public: void tst_QWidget::touchEventSynthesizedMouseEvent() { - if (m_platform == QStringLiteral("wayland")) - QSKIP("Wayland: This fails. Figure out why."); - { // Simple case, we ignore the touch events, we get mouse events instead TouchMouseWidget widget; @@ -10544,7 +10651,7 @@ void tst_QWidget::keyboardModifiers() KeyboardWidget w; w.resize(300, 300); w.show(); - QVERIFY(QTest::qWaitForWindowActive(&w)); + QVERIFY(QTest::qWaitForWindowExposed(&w)); QTest::mouseClick(&w, Qt::LeftButton, Qt::ControlModifier); QCOMPARE(w.m_eventCounter, 1); QCOMPARE(int(w.m_modifiers), int(Qt::ControlModifier)); @@ -10605,6 +10712,8 @@ void tst_QWidget::resizeStaticContentsChildWidget_QTBUG35282() widget.showNormal(); QVERIFY(QTest::qWaitForWindowExposed(&widget)); + if (m_platform == QStringLiteral("winrt")) + QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QCOMPARE(childWidget.numPaintEvents, 0); childWidget.reset(); |