mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-06 16:40:12 +01:00
Report touch emulated buttons in XIQueryPointer for XI 2.1 and earlier
XInput 2.1 and earlier clients do not know about touches. We must report
touch emulated button presses for these clients. For later clients, we
only report true pointer button presses.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit ee542b8559)
This commit is contained in:
parent
04474fc6a4
commit
dab90b60f3
1 changed files with 14 additions and 0 deletions
|
|
@ -79,10 +79,21 @@ ProcXIQueryPointer(ClientPtr client)
|
|||
XkbStatePtr state;
|
||||
char *buttons = NULL;
|
||||
int buttons_size = 0; /* size of buttons array */
|
||||
XIClientPtr xi_client;
|
||||
Bool have_xi22 = FALSE;
|
||||
|
||||
REQUEST(xXIQueryPointerReq);
|
||||
REQUEST_SIZE_MATCH(xXIQueryPointerReq);
|
||||
|
||||
/* Check if client is compliant with XInput 2.2 or later. Earlier clients
|
||||
* do not know about touches, so we must report emulated button presses. 2.2
|
||||
* and later clients are aware of touches, so we don't include emulated
|
||||
* button presses in the reply. */
|
||||
xi_client = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey);
|
||||
if (version_compare(xi_client->major_version,
|
||||
xi_client->minor_version, 2, 2) >= 0)
|
||||
have_xi22 = TRUE;
|
||||
|
||||
rc = dixLookupDevice(&pDev, stuff->deviceid, client, DixReadAccess);
|
||||
if (rc != Success) {
|
||||
client->errorValue = stuff->deviceid;
|
||||
|
|
@ -145,6 +156,9 @@ ProcXIQueryPointer(ClientPtr client)
|
|||
for (i = 1; i < pDev->button->numButtons; i++)
|
||||
if (BitIsOn(pDev->button->down, i))
|
||||
SetBit(buttons, pDev->button->map[i]);
|
||||
|
||||
if (!have_xi22 && pDev->touch && pDev->touch->buttonsDown > 0)
|
||||
SetBit(buttons, pDev->button->map[1]);
|
||||
}
|
||||
else
|
||||
rep.buttons_len = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue