diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2012-03-08 12:49:49 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-08 16:06:59 +0100 |
commit | 3ca1a2c28ec710183a3853432fe97224fffcdfbf (patch) | |
tree | 45d0df5bceb1aaba54a82e06589dbaeb9ad2787c /src/plugins | |
parent | f5b2a094677abaccb1c0a76f449144ccb89e4137 (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/plugins')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 8 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.h | 1 |
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; |