diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp index 6919f79711..f457955657 100644 --- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp @@ -136,6 +136,22 @@ static inline QTabBar::Shape tabBarShapeFrom(QTabWidget::TabShape shape, QTabWid return QTabBar::RoundedNorth; } +static int cascadedDeltaY(const QMdiArea *area) +{ + // Calculate the delta (dx, dy) between two cascaded subwindows. + const QWidget *subWindow = area->subWindowList().first(); + const QStyle *style = subWindow->style(); + QStyleOptionTitleBar options; + options.initFrom(subWindow); + int titleBarHeight = style->pixelMetric(QStyle::PM_TitleBarHeight, &options); + // ### Remove this after the QMacStyle has been fixed + if (style->inherits("QMacStyle")) + titleBarHeight -= 4; + const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar")); + return qMax(titleBarHeight - (titleBarHeight - fontMetrics.height()) / 2, 1) + + style->pixelMetric(QStyle::PM_FocusFrameVMargin); +} + enum Arrangement { Tiled, Cascaded @@ -147,7 +163,6 @@ static bool verifyArrangement(QMdiArea *mdiArea, Arrangement arrangement, const return false; const QList<QMdiSubWindow *> subWindows = mdiArea->subWindowList(); - const QMdiSubWindow *const firstSubWindow = subWindows.at(0); switch (arrangement) { case Tiled: @@ -179,17 +194,7 @@ static bool verifyArrangement(QMdiArea *mdiArea, Arrangement arrangement, const } case Cascaded: { - // Calculate the delta (dx, dy) between two cascaded subwindows. - QStyleOptionTitleBar options; - options.initFrom(firstSubWindow); - int titleBarHeight = firstSubWindow->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options); -#ifdef Q_OS_MAC - // ### Remove this after the mac style has been fixed - if (firstSubWindow->style()->inherits("QMacStyle")) - titleBarHeight -= 4; -#endif - const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar")); - const int dy = qMax(titleBarHeight - (titleBarHeight - fontMetrics.height()) / 2, 1); + const int dy = cascadedDeltaY(mdiArea); const int dx = 10; // Current activation/stacking order. @@ -513,6 +518,8 @@ void tst_QMdiArea::subWindowActivated2() #ifdef Q_OS_MAC QSKIP("QTBUG-25298: This test is unstable on Mac."); #endif + if (qApp->platformName().toLower() == QStringLiteral("xcb")) + QSKIP("QTBUG-25298: Unstable on some X11 window managers"); QTRY_COMPARE(spy.count(), 1); QVERIFY(!mdiArea.activeSubWindow()); QCOMPARE(mdiArea.currentSubWindow(), activeSubWindow); @@ -1006,11 +1013,6 @@ void tst_QMdiArea::activeSubWindow() qApp->setActiveWindow(&mainWindow); QCOMPARE(mdiArea->activeSubWindow(), subWindow); -#if !defined(Q_OS_MAC) && !defined(Q_OS_WIN) && !defined(Q_OS_QNX) - qApp->setActiveWindow(0); - QVERIFY(!mdiArea->activeSubWindow()); -#endif - //task 202657 dockWidgetLineEdit->setFocus(); qApp->setActiveWindow(&mainWindow); @@ -1086,12 +1088,6 @@ void tst_QMdiArea::currentSubWindow() qApp->sendEvent(active, &windowActivate); QVERIFY(mdiArea.activeSubWindow()); QVERIFY(mdiArea.currentSubWindow()); - -#if !defined(Q_OS_MAC) && !defined(Q_OS_WIN) && !defined(Q_OS_QNX) - qApp->setActiveWindow(0); - QVERIFY(!mdiArea.activeSubWindow()); - QVERIFY(mdiArea.currentSubWindow()); -#endif } void tst_QMdiArea::addAndRemoveWindows() @@ -1790,14 +1786,7 @@ void tst_QMdiArea::cascadeAndTileSubWindows() qApp->processEvents(); // Check dy between two cascaded windows - QStyleOptionTitleBar options; - options.initFrom(windows.at(1)); - int titleBarHeight = windows.at(1)->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options); - // ### Remove this after the mac style has been fixed - if (windows.at(1)->style()->inherits("QMacStyle")) - titleBarHeight -= 4; - const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar")); - const int dy = qMax(titleBarHeight - (titleBarHeight - fontMetrics.height()) / 2, 1); + const int dy = cascadedDeltaY(&workspace); #ifdef Q_OS_MAC QEXPECT_FAIL("", "QTBUG-25298", Abort); #endif |