diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-09-24 15:59:46 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-09-30 10:32:52 +0200 |
commit | 289b4ed7055f8d5a784c4525d1eeb86ffb02dda7 (patch) | |
tree | 3ee03249d50809c70efb5844a8962e4389895d16 /tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp | |
parent | c55324aee0e8ba2ef7dd53294cb60e914cb40500 (diff) |
QMdiArea: Fix positioning of cascaded sub windows.
Take PM_FocusFrameVMargin into account.
Task-number: QTBUG-35146
Change-Id: I1499790537ddf9fbb912ab764b7d049ee11af95d
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Diffstat (limited to 'tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp index 6919f79711..0e5150d6d1 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. @@ -1790,14 +1795,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 |