diff options
author | Chase Douglas <chase.douglas@canonical.com> | 2012-05-01 10:21:11 -0700 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-05-02 09:37:51 +1000 |
commit | 1e7b500a8e1d79b91a4e857a2da06194efe8cf69 (patch) | |
tree | 3422bd6606f90f4f4c34f4e34f776671153a8247 /Xi/xiquerypointer.c | |
parent | f3410b97cf9b48a47bee3d15d232f8a88e75f4ef (diff) |
Report logical button state in ProcXIQueryPointer
Physical button state is usually meaningless to an X client.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'Xi/xiquerypointer.c')
-rw-r--r-- | Xi/xiquerypointer.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c index a2e7442e0..ba99752ef 100644 --- a/Xi/xiquerypointer.c +++ b/Xi/xiquerypointer.c @@ -132,7 +132,7 @@ ProcXIQueryPointer(ClientPtr client) } if (pDev->button) { - int i, down; + int i; rep.buttons_len = bytes_to_int32(bits_to_bytes(pDev->button->numButtons)); @@ -142,14 +142,9 @@ ProcXIQueryPointer(ClientPtr client) if (!buttons) return BadAlloc; - down = pDev->button->buttonsDown; - - for (i = 0; i < pDev->button->numButtons && down; i++) { - if (BitIsOn(pDev->button->down, i)) { - SetBit(buttons, i); - down--; - } - } + for (i = 1; i < pDev->button->numButtons; i++) + if (BitIsOn(pDev->button->down, i)) + SetBit(buttons, pDev->button->map[i]); } else rep.buttons_len = 0; |