QApplication: fix touch to mouse bug when setting buttons()
QApplicationPrivate::translateTouchToMouse always sets buttons() to Qt::LeftButton for synthesised events. This is wrong for a mouse release, since 'button' should in that case be Qt::LeftButton, and 'buttons' should be Qt::NoButton (since no buttons are actually being pressed). This caused problems for QGraphicsView, which refuses to release any mouse grab set on a QGraphicsItem if at least one button is being pressed (which was always true). This resulted in broken drag behavior on touch platforms. Change-Id: Iefe63cd753f9f8bb04278fd04a4d728e3deda25e Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This commit is contained in:
parent
3c46b829f9
commit
0d308c4111
@ -3821,7 +3821,8 @@ bool QApplicationPrivate::translateTouchToMouse(QWidget *widget, QTouchEvent *ev
|
||||
const QPoint pos = widget->mapFromGlobal(p.screenPos().toPoint());
|
||||
|
||||
QMouseEvent mouseEvent(eventType, pos, p.screenPos().toPoint(),
|
||||
Qt::LeftButton, Qt::LeftButton,
|
||||
Qt::LeftButton,
|
||||
(eventType == QEvent::MouseButtonRelease) ? Qt::NoButton : Qt::LeftButton,
|
||||
event->modifiers());
|
||||
mouseEvent.setAccepted(true);
|
||||
mouseEvent.setTimestamp(event->timestamp());
|
||||
|
Loading…
x
Reference in New Issue
Block a user