diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-12-15 07:53:19 +1000 |
---|---|---|
committer | Chase Douglas <chase.douglas@canonical.com> | 2011-12-21 10:34:12 -0800 |
commit | bb945137a23d4961139a63ff26e4c9aee2fc9d17 (patch) | |
tree | ce48f4d6e5a4a6dc2296ecc4d698ce7fb240abfb | |
parent | d321abd2028e8221c6a108deca3939190392c241 (diff) |
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 <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r-- | dix/inpututils.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/dix/inpututils.c b/dix/inpututils.c index e1a11a170..d279c1d75 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, mouse->button->map[i]); + if (mouse && mouse->touch && mouse->touch->buttonsDown > 0) + SetBit(event->buttons, mouse->button->map[1]); + if (kbd && kbd->key) { XkbStatePtr state; |