[PATCH][master][1.12] Use touch state when querying pointer through core protocol
Peter Hutterer
peter.hutterer at who-t.net
Thu Apr 12 22:31:54 PDT 2012
On Tue, Apr 03, 2012 at 05:31:01PM -0700, Chase Douglas wrote:
> QueryPointer is part of the core protocol. As such, it knows nothing
> about touch devices. Touches are converted to button 1 press, pointer
> motion, and button 1 release for core clients, so we should ensure the
> pointer state mask has button 1 set when XQueryPointer is used.
>
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
merged, thanks.
> ---
> A similar patch is needed for ProcXIQueryPointer, but I don't know what
> to do there. My initial thoughts are to set the button 1 mask if the
> client is XI 2.1 or earlier, and not set the button 1 mask otherwise.
yes
> Either way, I think the XI protocol needs to be updated to make it clear
> what should happen.
yes :)
Cheers,
Peter
> dix/events.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/dix/events.c b/dix/events.c
> index 4470947..b9f9cfa 100644
> --- a/dix/events.c
> +++ b/dix/events.c
> @@ -5098,8 +5098,7 @@ ProcQueryPointer(ClientPtr client)
> memset(&rep, 0, sizeof(xQueryPointerReply));
> rep.type = X_Reply;
> rep.sequenceNumber = client->sequence;
> - rep.mask = mouse->button ? (mouse->button->state) : 0;
> - rep.mask |= XkbStateFieldFromRec(&keyboard->key->xkbInfo->state);
> + rep.mask = event_get_corestate(mouse, keyboard);
> rep.length = 0;
> rep.root = (GetCurrentRootWindow(mouse))->drawable.id;
> rep.rootX = pSprite->hot.x;
> --
> 1.7.9.1
>
More information about the xorg-devel
mailing list