forked from pool/libqt5-qtbase
50 lines
2.0 KiB
Diff
50 lines
2.0 KiB
Diff
|
From 444ba31a0a68421ee9ff7de788f6026599202455 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?B=C5=82a=C5=BCej=20Szczygie=C5=82?= <spaz16@wp.pl>
|
||
|
Date: Fri, 10 Jun 2016 00:11:35 +0200
|
||
|
Subject: xcb: Don't activate bypassed windows on mouse press
|
||
|
|
||
|
Windows with "Qt::BypassWindowManagerHint" flag can't be activated by
|
||
|
mouse. They can be activated only from code calling "activateWindow()"
|
||
|
or "requestActivate()" methods.
|
||
|
|
||
|
The patch applies also for "Qt::ToolTip" and "Qt::Popup" windows which
|
||
|
have implicit "Qt::BypassWindowManagerHint" flag.
|
||
|
|
||
|
The patch fixes some major issues:
|
||
|
- don't activate tooltips on mouse press - this causes that Qt "thinks"
|
||
|
that original windows loses its focus causing e.g. that text cursor
|
||
|
stops blinking,
|
||
|
- don't activate X11 tray icon - this causes that the active window
|
||
|
looses its focus by clicking tray icon.
|
||
|
|
||
|
The patch restores the Qt4 behavior.
|
||
|
|
||
|
Task-number: QTBUG-53993
|
||
|
Change-Id: I80b226f2f5ea0ebbfe8922c90d9da9f4132e8cce
|
||
|
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||
|
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
|
||
|
---
|
||
|
src/plugins/platforms/xcb/qxcbwindow.cpp | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||
|
index 0c2f0d7..b5cde14 100644
|
||
|
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||
|
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||
|
@@ -2201,8 +2201,11 @@ void QXcbWindow::handleButtonPressEvent(int event_x, int event_y, int root_x, in
|
||
|
const bool isWheel = detail >= 4 && detail <= 7;
|
||
|
if (!isWheel && window() != QGuiApplication::focusWindow()) {
|
||
|
QWindow *w = static_cast<QWindowPrivate *>(QObjectPrivate::get(window()))->eventReceiver();
|
||
|
- if (!(w->flags() & Qt::WindowDoesNotAcceptFocus))
|
||
|
+ if (!(w->flags() & (Qt::WindowDoesNotAcceptFocus | Qt::BypassWindowManagerHint))
|
||
|
+ && w->type() != Qt::ToolTip
|
||
|
+ && w->type() != Qt::Popup) {
|
||
|
w->requestActivate();
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
updateNetWmUserTime(timestamp);
|
||
|
--
|
||
|
cgit v1.0-4-g1e03
|
||
|
|