From 3ca1a2c28ec710183a3853432fe97224fffcdfbf Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 8 Mar 2012 12:49:49 +0100 Subject: Defer window activation if the window hasn't beenn mapped yet. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I60d616fc60d3be9b55ab2599abadede5f7c11f93 Reviewed-by: Samuel Rødal --- src/plugins/platforms/xcb/qxcbwindow.cpp | 8 +++++++- src/plugins/platforms/xcb/qxcbwindow.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3