forked from pool/libqt5-qtbase
8b9e88c08a
The Time Has Come to Shoot You Down... What a Sound OBS-URL: https://build.opensuse.org/request/show/431274 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=56
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
|
|
|