From da724e8f1d1867c36c9550a153c58829939800fc Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 6 Mar 2009 15:50:05 +1000 Subject: [PATCH] Xi: Set the button state on the event during POE. Signed-off-by: Peter Hutterer --- Xi/exevents.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Xi/exevents.c b/Xi/exevents.c index 20e0fbbfa..456e0791f 100644 --- a/Xi/exevents.c +++ b/Xi/exevents.c @@ -885,7 +885,7 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device) KeyClassPtr k; ValuatorClassPtr v; int ret = 0; - int state; + int state, i; DeviceIntPtr mouse = NULL, kbd = NULL; DeviceEvent *event = (DeviceEvent*)ev; @@ -907,11 +907,14 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device) state = (kbd) ? XkbStateFieldFromRec(&kbd->key->xkbInfo->state) : 0; state |= (mouse) ? (mouse->button->state) : 0; + for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) + if (BitIsOn(mouse->button->down, i)) + SetBit(event->buttons, i); + ret = UpdateDeviceState(device, event); if (ret == DONT_PROCESS) return; - v = device->valuator; b = device->button; k = device->key;