From 779ef8bb7e714eef8d48298f641a046e3d25a881 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Fri, 16 Nov 2012 16:31:49 +0000 Subject: [PATCH] QNX: Fix window focus problems when using QNX 6.5.0. In blackberry, activation events come through the navigator, but we might not have a navigator. Change-Id: I0d9e1a08336aa403035fdf00be46d839a83f4b58 Reviewed-by: Kevin Krammer Reviewed-by: Sean Harmer --- src/plugins/platforms/qnx/qqnxintegration.cpp | 6 ++++++ src/plugins/platforms/qnx/qqnxintegration.h | 2 ++ src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp index d35ec935fd6..e594ea952dc 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.cpp +++ b/src/plugins/platforms/qnx/qqnxintegration.cpp @@ -518,4 +518,10 @@ QQnxScreen *QQnxIntegration::primaryDisplay() const return m_screens.first(); } +bool QQnxIntegration::supportsNavigatorEvents() const +{ + // If QQNX_PPS or Q_OS_BLACKBERRY is defined then we have navigator + return m_navigator != 0; +} + QT_END_NAMESPACE diff --git a/src/plugins/platforms/qnx/qqnxintegration.h b/src/plugins/platforms/qnx/qqnxintegration.h index 441e2c9d683..97a5e631e8d 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.h +++ b/src/plugins/platforms/qnx/qqnxintegration.h @@ -98,6 +98,8 @@ public: void moveToScreen(QWindow *window, int screen); + bool supportsNavigatorEvents() const; + QAbstractEventDispatcher *guiThreadEventDispatcher() const; QPlatformFontDatabase *fontDatabase() const { return m_fontDatabase; } diff --git a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp index d8712bf5690..8b41465add2 100644 --- a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp @@ -276,6 +276,11 @@ void QQnxScreenEventHandler::handlePointerEvent(screen_event_t event) qScreenEventDebug() << Q_FUNC_INFO << "Qt enter, w=" << w; } } + + // If we don't have a navigator, we don't get activation events. + if (buttonState && w && w != QGuiApplication::focusWindow() && !m_qnxIntegration->supportsNavigatorEvents()) + QWindowSystemInterface::handleWindowActivated(w); + m_lastMouseWindow = qnxWindow; // Apply scaling to wheel delta and invert value for Qt. We'll probably want to scale