mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-02 21:40:10 +01:00
Update device state including when touch record does not exist
If a touch is physically active, the pointer core state should reflect
that the first button is pressed. Currently, this only occurs when there
are active listeners of the touch sequence. By moving the device state
updating to the beginning of touch processing we ensure it is updated
according to the processed physical state no matter what.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit a986f2f30c)
This commit is contained in:
parent
a9dbdb4969
commit
96d8df5bc9
2 changed files with 3 additions and 11 deletions
|
|
@ -1597,6 +1597,9 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
|
|||
else
|
||||
touchid = ev->device_event.touchid;
|
||||
|
||||
if (emulate_pointer)
|
||||
UpdateDeviceState(dev, &ev->device_event);
|
||||
|
||||
if (type == ET_TouchBegin) {
|
||||
ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid,
|
||||
emulate_pointer);
|
||||
|
|
@ -1996,9 +1999,6 @@ DeliverTouchEvents(DeviceIntPtr dev, TouchPointInfoPtr ti,
|
|||
|
||||
DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask);
|
||||
}
|
||||
|
||||
if (ti->emulate_pointer)
|
||||
UpdateDeviceState(dev, &ev->device_event);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
|||
|
|
@ -364,14 +364,6 @@ TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti)
|
|||
{
|
||||
if (ti->emulate_pointer) {
|
||||
GrabPtr grab;
|
||||
DeviceEvent ev;
|
||||
|
||||
memset(&ev, 0, sizeof(ev));
|
||||
ev.type = ET_TouchEnd;
|
||||
ev.detail.button = 1;
|
||||
ev.touchid = ti->client_id;
|
||||
ev.flags = TOUCH_POINTER_EMULATED | TOUCH_END;
|
||||
UpdateDeviceState(dev, &ev);
|
||||
|
||||
if ((grab = dev->deviceGrab.grab)) {
|
||||
if (dev->deviceGrab.fromPassiveGrab &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue