diff options
author | Liang Qi <liang.qi@digia.com> | 2014-01-03 14:11:27 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-03 15:27:38 +0100 |
commit | bdd3ead8270dfde12b0b4eb57125a22e51ee88ce (patch) | |
tree | 36d7d67fef107557faa9fe50737e04385a58d9f2 /tests/auto/gui/kernel/qwindow | |
parent | b5ab7ee0d78a30863e3d11bd2ba10ba5f4854bf5 (diff) |
OSX: support fake fullscreen and etc
* Fix QCocoaWindow::setGeometry() to respect WindowFrameInclusive
* Support fake fullscreen on 10.6 or WindowFullscreenButtonHint was not set on
10.7 and later
* Fix tst_qwindow on 10.6 and later
Task-number: QTBUG-23059
Task-number: QTBUG-34629
Change-Id: I6e032ca55b45674388b00506a424d3bd7ece429f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'tests/auto/gui/kernel/qwindow')
-rw-r--r-- | tests/auto/gui/kernel/qwindow/tst_qwindow.cpp | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp index 259c840ae7..76b3a4f6cc 100644 --- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp +++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp @@ -61,6 +61,7 @@ private slots: void eventOrderOnShow(); void resizeEventAfterResize(); void mapGlobal(); + void positioning_data(); void positioning(); void isExposed(); void isActive(); @@ -93,7 +94,6 @@ private: QTouchDevice *touchDevice; }; - void tst_QWindow::mapGlobal() { QWindow a; @@ -116,10 +116,10 @@ void tst_QWindow::mapGlobal() class Window : public QWindow { public: - Window() + Window(const Qt::WindowFlags flags = Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint) { reset(); - setFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint); + setFlags(flags); } void reset() @@ -188,6 +188,23 @@ void tst_QWindow::resizeEventAfterResize() QTRY_COMPARE(window.received(QEvent::Resize), 2); } +void tst_QWindow::positioning_data() +{ + QTest::addColumn<int>("windowflags"); + QTest::addColumn<int>("resizecount"); + + QTest::newRow("default") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint) +#if defined(Q_OS_OSX) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 + << 4; +#else + << 3; +#endif + +#ifdef Q_OS_OSX + QTest::newRow("fake") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint) << 4; +#endif +} + void tst_QWindow::positioning() { if (!QGuiApplicationPrivate::platformIntegration()->hasCapability( @@ -200,7 +217,9 @@ void tst_QWindow::positioning() const QSize size = QSize(300, 40); const QRect geometry(QPoint(80, 80), size); - Window window; + QFETCH(int, windowflags); + QFETCH(int, resizecount); + Window window((Qt::WindowFlags)windowflags); window.setGeometry(QRect(QPoint(20, 20), size)); window.setFramePosition(QPoint(40, 40)); // Move window around before show, size must not change. QCOMPARE(window.geometry().size(), size); @@ -223,14 +242,13 @@ void tst_QWindow::positioning() window.setWindowState(Qt::WindowFullScreen); QCoreApplication::processEvents(); -#ifdef Q_OS_OSX - QEXPECT_FAIL("", "Multiple failures in this test on Mac OS X, see QTBUG-23059", Abort); -#endif QTRY_COMPARE(window.received(QEvent::Resize), 2); + QTest::qWait(2000); + window.setWindowState(Qt::WindowNoState); QCoreApplication::processEvents(); - QTRY_COMPARE(window.received(QEvent::Resize), 3); + QTRY_COMPARE(window.received(QEvent::Resize), resizecount); QTRY_COMPARE(originalPos, window.position()); QTRY_COMPARE(originalFramePos, window.framePosition()); @@ -239,7 +257,7 @@ void tst_QWindow::positioning() // if our positioning is actually fully respected by the window manager // test whether it correctly handles frame positioning as well if (originalPos == geometry.topLeft() && (originalMargins.top() != 0 || originalMargins.left() != 0)) { - QPoint framePos = QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft() + QPoint(40, 40); + QPoint framePos = QPlatformScreen::platformScreenForWindow(&window)->availableGeometry().topLeft() + QPoint(40, 40); window.reset(); window.setFramePosition(framePos); |