summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@digia.com>2013-10-30 10:44:40 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-30 13:09:47 +0100
commit105e228d1c733e20787fd80e669be22064149c74 (patch)
tree73563a8c97e469b05339273f1a6db119cb905273 /src/plugins/platforms/xcb
parente7bda8ee1084e24710e91a32b5ff1434a368cf4e (diff)
xcb: Act on the _NET_ACTIVE_WINDOW event
It happens that we don't get a focus inn event for top level windows when focus goes from a window mapped. But we do get a _NET_ACTIVE_WINDOW event. Task-number: QTBUG-34426 Change-Id: Id1d9eb708a968e0e8934e56dec19abe2dd203bc7 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'src/plugins/platforms/xcb')
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index c1650f6576..dd404d044d 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -1544,10 +1544,13 @@ void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *even
#endif
} else if (event->type == atom(QXcbAtom::_XEMBED)) {
handleXEmbedMessage(event);
- } else if (event->type == atom(QXcbAtom::MANAGER) || event->type == atom(QXcbAtom::_NET_ACTIVE_WINDOW)
- || event->type == atom(QXcbAtom::_NET_WM_STATE) || event->type == atom(QXcbAtom::MANAGER)
+ } else if (event->type == atom(QXcbAtom::_NET_ACTIVE_WINDOW)) {
+ connection()->setFocusWindow(this);
+ QWindowSystemInterface::handleWindowActivated(window());
+ } else if (event->type == atom(QXcbAtom::MANAGER)
+ || event->type == atom(QXcbAtom::_NET_WM_STATE)
|| event->type == atom(QXcbAtom::WM_CHANGE_STATE)) {
- // Ignore _NET_ACTIVE_WINDOW, _NET_WM_STATE, MANAGER which are relate to tray icons
+ // Ignore _NET_WM_STATE, MANAGER which are relate to tray icons
// and other messages.
} else if (event->type == atom(QXcbAtom::_COMPIZ_DECOR_PENDING)
|| event->type == atom(QXcbAtom::_COMPIZ_DECOR_REQUEST)