From 3eb42abab6c7d1f3a32ca55c972b1d7a4a703658 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 2 Mar 2018 15:24:32 +0100 Subject: [PATCH] Check for WindowActivation capability instead of platform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before running tests that depend on QWindow::requestActivate Gets rid of several Wayland platform checks in tst_QWindow. Change-Id: I7a5e029044a968dfcf87ecbb5105c01d52852d35 Reviewed-by: Shawn Rutledge Reviewed-by: Tor Arne Vestbø Reviewed-by: Pier Luigi Fiorini --- src/gui/kernel/qplatformintegration.cpp | 2 +- src/gui/kernel/qplatformintegration.h | 1 + tests/auto/gui/kernel/qwindow/tst_qwindow.cpp | 24 +++++++++---------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index 866ce08a28..2aaa4c8510 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -265,7 +265,7 @@ QPlatformServices *QPlatformIntegration::services() const bool QPlatformIntegration::hasCapability(Capability cap) const { return cap == NonFullScreenWindows || cap == NativeWidgets || cap == WindowManagement - || cap == TopStackedNativeChildWindows; + || cap == TopStackedNativeChildWindows || cap == WindowActivation; } QPlatformPixmap *QPlatformIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 37884e1f78..d88f818920 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -97,6 +97,7 @@ public: NonFullScreenWindows, NativeWidgets, WindowManagement, + WindowActivation, // whether requestActivate is supported SyncState, RasterGLSurface, AllGLFunctionsQueryable, diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp index 339335b3a7..5a87ae6067 100644 --- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp +++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp @@ -795,8 +795,8 @@ void tst_QWindow::isExposed() void tst_QWindow::isActive() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: This fails. Figure out why."); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); Window window; // Some platforms enforce minimum widths for windows, which can cause extra resize @@ -1480,8 +1480,8 @@ void tst_QWindow::close() void tst_QWindow::activateAndClose() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: This fails. Figure out why."); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); for (int i = 0; i < 10; ++i) { QWindow window; @@ -1876,8 +1876,8 @@ static bool isPlatformOffscreenOrMinimal() void tst_QWindow::modalDialog() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: This fails. Figure out why."); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); if (QGuiApplication::platformName() == QLatin1String("cocoa")) QSKIP("Test fails due to QTBUG-61965, and is slow due to QTBUG-61964"); @@ -1957,8 +1957,8 @@ void tst_QWindow::modalDialogClosingOneOfTwoModal() void tst_QWindow::modalWithChildWindow() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: This fails. Figure out why."); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); QWindow normalWindow; normalWindow.setFramePosition(m_availableTopLeft + QPoint(80, 80)); @@ -1991,8 +1991,8 @@ void tst_QWindow::modalWithChildWindow() void tst_QWindow::modalWindowModallity() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: This fails. Figure out why."); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); QWindow normal_window; normal_window.setFramePosition(m_availableTopLeft + QPoint(80, 80)); @@ -2037,8 +2037,8 @@ void tst_QWindow::modalWindowPosition() #ifndef QT_NO_CURSOR void tst_QWindow::modalWindowEnterEventOnHide_QTBUG35109() { - if (!QGuiApplication::platformName().compare(QLatin1String("wayland"), Qt::CaseInsensitive)) - QSKIP("Wayland: QWindow::requestActivate() is not supported"); + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("QWindow::requestActivate() is not supported."); if (isPlatformOffscreenOrMinimal()) QSKIP("Can't test window focusing on offscreen/minimal");