diff options
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxwindow.cpp')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxwindow.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp index a5e899aa7e..a129380575 100644 --- a/src/plugins/platforms/qnx/qqnxwindow.cpp +++ b/src/plugins/platforms/qnx/qqnxwindow.cpp @@ -51,13 +51,16 @@ #include <QtCore/QDebug> -#include <errno.h> - #if defined(Q_OS_BLACKBERRY) +#if !defined(Q_OS_BLACKBERRY_TABLET) +#include "qqnxnavigatorcover.h" +#endif #include <sys/pps.h> #include <bps/navigator.h> #endif +#include <errno.h> + #if defined(QQNXWINDOW_DEBUG) #define qWindowDebug qDebug #else @@ -81,7 +84,8 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context) // Create child QNX window errno = 0; - if (static_cast<QQnxScreen *>(window->screen()->handle())->isPrimaryScreen()) { + if (static_cast<QQnxScreen *>(window->screen()->handle())->isPrimaryScreen() + && window->type() != Qt::CoverWindow) { result = screen_create_window_type(&m_window, m_screenContext, SCREEN_CHILD_WINDOW); } else { result = screen_create_window(&m_window, m_screenContext); @@ -352,7 +356,7 @@ void QQnxWindow::setScreen(QQnxScreen *platformScreen) qFatal("QQnxWindow: failed to set window display, errno=%d", errno); - if (m_screen->isPrimaryScreen()) { + if (m_screen->isPrimaryScreen() && window()->type() != Qt::CoverWindow) { // Add window to display's window group errno = 0; result = screen_join_window_group(m_window, platformScreen->windowGroupName()); @@ -361,8 +365,7 @@ void QQnxWindow::setScreen(QQnxScreen *platformScreen) Q_FOREACH (QQnxWindow *childWindow, m_childWindows) { // Only subwindows and tooltips need necessarily be moved to another display with the window. - if ((window()->type() & Qt::WindowType_Mask) == Qt::SubWindow || - (window()->type() & Qt::WindowType_Mask) == Qt::ToolTip) + if (window()->type() == Qt::SubWindow || window()->type() == Qt::ToolTip) childWindow->setScreen(platformScreen); } } @@ -558,6 +561,17 @@ void QQnxWindow::initWindow() setScreen(static_cast<QQnxScreen *>(window()->screen()->handle())); + if (window()->type() == Qt::CoverWindow) { +#if !defined(Q_OS_BLACKBERRY_TABLET) + screen_set_window_property_pv(m_screen->rootWindow()->nativeHandle(), + SCREEN_PROPERTY_ALTERNATE_WINDOW, (void**)&m_window); +#if defined(Q_OS_BLACKBERRY) + m_cover.reset(new QQnxNavigatorCover); +#endif +#endif // Q_OS_BLACKBERRY_TABLET + m_exposed = false; + } + // Add window to plugin's window mapper QQnxIntegration::addWindow(m_window, window()); |