[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