Don't set focus when moving the cursor with a touch pad
On macOS, swiping with a single finger on the track pad (which Qt identifies as a QInputDevice::DeviceType::TouchPad) results in a TouchBegin event. For widgets that accept touch events (perhaps implicitly because they want pan gestures, like QGraphicsView), this results in a TouchBegin event to be delivered. QApplication::notify will then check the widget's focus policy, and with ClickFocus set, will set focus on the widget. This is not what we want for a TouchBegin on a touch pad, so skip the setting of the focus for that device type. Pick-to: 6.5 Fixes: QTBUG-112922 Change-Id: Ie828793a784cc0e2fa47954bf5b396d6a44bd5e8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
c2f01d4cfb
commit
127e33d4c6
@ -3062,7 +3062,8 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
|
||||
bool eventAccepted = touchEvent->isAccepted();
|
||||
bool acceptTouchEvents = w->testAttribute(Qt::WA_AcceptTouchEvents);
|
||||
|
||||
if (acceptTouchEvents && e->spontaneous()) {
|
||||
if (acceptTouchEvents && e->spontaneous()
|
||||
&& touchEvent->device()->type() != QInputDevice::DeviceType::TouchPad) {
|
||||
const QPoint localPos = touchEvent->points()[0].position().toPoint();
|
||||
QApplicationPrivate::giveFocusAccordingToFocusPolicy(w, e, localPos);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user