From 6a77b66f2baa87f06c8e7a6bb7723b356e03fde3 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 15 Dec 2011 07:53:19 +1000 Subject: dix: set core and button state based on the touch state If a pointer-emulating touch caused a button to be logically down, set that state in the input events. Signed-off-by: Peter Hutterer --- dix/inpututils.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dix/inpututils.c b/dix/inpututils.c index 8cd4d5921..50a122f2f 100644 --- a/dix/inpututils.c +++ b/dix/inpututils.c @@ -663,6 +663,8 @@ int event_get_corestate(DeviceIntPtr mouse, DeviceIntPtr kbd) /* core state needs to be assembled BEFORE the device is updated. */ corestate = (kbd && kbd->key) ? XkbStateFieldFromRec(&kbd->key->xkbInfo->state) : 0; corestate |= (mouse && mouse->button) ? (mouse->button->state) : 0; + corestate |= (mouse && mouse->touch) ? (mouse->touch->state) : 0; + return corestate; } @@ -674,6 +676,9 @@ void event_set_state(DeviceIntPtr mouse, DeviceIntPtr kbd, DeviceEvent *event) if (BitIsOn(mouse->button->down, i)) SetBit(event->buttons, i); + if (mouse && mouse->touch && mouse->touch->buttonsDown > 0) + SetBit(event->buttons, mouse->button->map[1]); + if (kbd && kbd->key) { XkbStatePtr state; -- cgit v1.2.3