summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/qnx/qqnxscreen.cpp6
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.cpp13
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.h2
3 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/platforms/qnx/qqnxscreen.cpp b/src/plugins/platforms/qnx/qqnxscreen.cpp
index 7959617443..d940b35861 100644
--- a/src/plugins/platforms/qnx/qqnxscreen.cpp
+++ b/src/plugins/platforms/qnx/qqnxscreen.cpp
@@ -646,6 +646,9 @@ void QQnxScreen::activateWindowGroup(const QByteArray &id)
if (!window)
return;
+ Q_FOREACH (QQnxWindow *childWindow, m_childWindows)
+ childWindow->setExposed(true);
+
QWindowSystemInterface::handleWindowActivated(window);
}
@@ -656,6 +659,9 @@ void QQnxScreen::deactivateWindowGroup(const QByteArray &id)
if (!rootWindow() || id != rootWindow()->groupName())
return;
+ Q_FOREACH (QQnxWindow *childWindow, m_childWindows)
+ childWindow->setExposed(false);
+
QWindowSystemInterface::handleWindowActivated(0);
}
diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp
index 9b9576c88b..61b13099fd 100644
--- a/src/plugins/platforms/qnx/qqnxwindow.cpp
+++ b/src/plugins/platforms/qnx/qqnxwindow.cpp
@@ -75,6 +75,7 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context)
m_screen(0),
m_parentWindow(0),
m_visible(false),
+ m_exposed(true),
m_windowState(Qt::WindowNoState),
#if !defined(QT_NO_OPENGL)
m_platformOpenGLContext(0),
@@ -334,9 +335,19 @@ void QQnxWindow::setOpacity(qreal level)
// the transparency will look wrong...
}
+void QQnxWindow::setExposed(bool exposed)
+{
+ qWindowDebug() << Q_FUNC_INFO << "window =" << window() << "expose =" << exposed;
+
+ if (m_exposed != exposed) {
+ m_exposed = exposed;
+ QWindowSystemInterface::handleExposeEvent(window(), window()->geometry());
+ }
+}
+
bool QQnxWindow::isExposed() const
{
- return m_visible;
+ return m_visible && m_exposed;
}
QSize QQnxWindow::requestedBufferSize() const
diff --git a/src/plugins/platforms/qnx/qqnxwindow.h b/src/plugins/platforms/qnx/qqnxwindow.h
index 4fabccf4cb..cd1980d994 100644
--- a/src/plugins/platforms/qnx/qqnxwindow.h
+++ b/src/plugins/platforms/qnx/qqnxwindow.h
@@ -102,6 +102,7 @@ public:
void lower();
void requestActivateWindow();
void setWindowState(Qt::WindowState state);
+ void setExposed(bool exposed);
void propagateSizeHints();
@@ -158,6 +159,7 @@ private:
QList<QQnxWindow*> m_childWindows;
QQnxWindow *m_parentWindow;
bool m_visible;
+ bool m_exposed;
QRect m_unmaximizedGeometry;
Qt::WindowState m_windowState;