Handle ACTION_POINTER_UP with tablet events
The ACTION_POINTER_UP is used when a non-primary pointer (touch, mouse stylus, eraser) goes up. Without handling this action in these cases, the table event remains in 'down' state (misses the QEvent::TabletRelease) and as a consequence when it is next put on the screen, eg. a line will be drawn to the new position (in case of a drawing application). In addition use getActionMasked() to get the action; non-masked events would contain the index of the pointer too, and wouldn't match with ACTION_POINTER_UP whose numeric value is 6. Rather the actions would be in the lines of: 261, // ACTION_POINTER_DOWN(1), 6 with getActionMasked() 517, // ACTION_POINTER_DOWN(2), 6 with getActionMasked() And so on. Pick-to: 6.6 6.5 Fixes: QTBUG-86297 Change-Id: I1b50ca4d19b611aec8a5c280ed0521e2f11797b0 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>bb10
parent
614e0f1daa
commit
3ee57b8387
|
|
@ -581,7 +581,7 @@ public class QtNative
|
|||
if (event.getToolType(0) == MotionEvent.TOOL_TYPE_MOUSE) {
|
||||
sendMouseEvent(event, id);
|
||||
} else if (m_tabletEventSupported && pointerType != 0) {
|
||||
tabletEvent(id, event.getDeviceId(), event.getEventTime(), event.getAction(), pointerType,
|
||||
tabletEvent(id, event.getDeviceId(), event.getEventTime(), event.getActionMasked(), pointerType,
|
||||
event.getButtonState(), event.getX(), event.getY(), event.getPressure());
|
||||
} else {
|
||||
touchBegin(id);
|
||||
|
|
|
|||
|
|
@ -312,6 +312,7 @@ namespace QtAndroidInput
|
|||
Qt::MouseButtons buttons = Qt::NoButton;
|
||||
switch (action) {
|
||||
case 1: // ACTION_UP
|
||||
case 6: // ACTION_POINTER_UP, happens if stylus is not the primary pointer
|
||||
case 212: // stylus release while side-button held on Galaxy Note 4
|
||||
buttons = Qt::NoButton;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue