Pointer grabs causing accessibility issues! Why not deprecate them?

Francesco Fumanti francesco.fumanti at gmx.net
Tue Apr 29 04:10:09 PDT 2008


Hello Peter,

Thanks for the list of examples.

I deduce from it, that it would probably also not make sense to add 
recommendations about avoiding pointer grabs to the developers' guides; 
as drag and drop, popups,... are standard elements of a modern 
application with gui.

Or are these pointer grabs only internal mechanism that the application 
developer does not have to explicitely call?

Cheers

Francesco


Peter Hutterer wrote:
> Francesco Fumanti wrote:
>> Could you please expand on the main reasons why it is not feasible?
>>
>> For example, in what situations are the pointer grabs really 
>> unavoidable and unreplacable by other techniques?
> 
> 
> pointer grabs are a method of guaranteeing that events are delivered to 
> a certain client - and not to the window underneath the pointer as usual.
> 
> the most common uses I can think of:
> - popup menus: apps use grabs for them because it can tell them whether 
> the following click was on the window or outside. implementing the same 
> functionality without a grab would require the client to register for 
> click events on every single visible window. This is unfeasable.
> 
> - drag and drop: grabs are the only way how to guarantee you'll get all 
> motion events. the only other way is to register for motion events on 
> every single visible window.
> 
> - event interception: passive grabs (synchronised ones anyway) allow you 
> to receive an event before the actual window under the cursor gets it. 
> window managers use this extensively to e.g. raise and focus window when 
> you click into it. the WM then tells the X server to replay the event on 
> the client window. this can't be done any other way.
> 
> - keyboard shortcuts: passive keyboard grabs are what makes your 
> shortcuts work. without them - no shortcuts. unless your client 
> registers for key events on every... you know the drill :)
> 
> and of course the example you mentioned where a grab ensures nobody can 
> sniff on the input data (too easily anyway).
> 
> I don't know of any other techniques but if you come up with some I'd be 
> interested to read about them. The only thing that may work is to 
> restrict the exclusiveness of a grab (a event delivered to a grabbing 
> client be also delivered to the actual client). but believe me, here be 
> dragons.
> 
> Cheers,
>   Peter
> 
> PS: I believe windows has a similar feature called "captures", although 
> I do not know how they work exactly. Not sure what OS X has, haven't 
> done any mentionable GUI programming there.
> 




More information about the xorg mailing list