summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2012-03-08 12:49:49 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-08 16:06:59 +0100
commit3ca1a2c28ec710183a3853432fe97224fffcdfbf (patch)
tree45d0df5bceb1aaba54a82e06589dbaeb9ad2787c /src
parentf5b2a094677abaccb1c0a76f449144ccb89e4137 (diff)
Defer window activation if the window hasn't beenn mapped yet.
Change-Id: I60d616fc60d3be9b55ab2599abadede5f7c11f93 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp8
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 542d7ab69f..055defde08 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -143,6 +143,7 @@ QXcbWindow::QXcbWindow(QWindow *window)
, m_syncCounter(0)
, m_mapped(false)
, m_transparent(false)
+ , m_deferredActivation(false)
, m_netWmUserTimeWindow(XCB_NONE)
#if defined(XCB_USE_EGL)
, m_eglSurface(0)
@@ -1178,8 +1179,11 @@ void QXcbWindow::propagateSizeHints()
void QXcbWindow::requestActivateWindow()
{
- if (!m_mapped)
+ if (!m_mapped) {
+ m_deferredActivation = true;
return;
+ }
+ m_deferredActivation = false;
updateNetWmUserTime(connection()->time());
@@ -1334,6 +1338,8 @@ void QXcbWindow::handleMapNotifyEvent(const xcb_map_notify_event_t *event)
{
if (event->window == m_window) {
m_mapped = true;
+ if (m_deferredActivation)
+ requestActivateWindow();
QWindowSystemInterface::handleMapEvent(window());
}
}
diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
index 6ae55e77e6..c212095e98 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.h
+++ b/src/plugins/platforms/xcb/qxcbwindow.h
@@ -154,6 +154,7 @@ private:
bool m_mapped;
bool m_transparent;
+ bool m_deferredActivation;
xcb_window_t m_netWmUserTimeWindow;
QSurfaceFormat m_format;