[PATCH weston] dnd: reset the mouse cursor after adding a new item

Bill Spitzak spitzak at gmail.com
Wed Nov 19 14:41:23 PST 2014


On 11/19/2014 07:16 AM, Derek Foreman wrote:

> I'm pretty sure the mouse may have already moved - exactly the same
> reason as above, this handler is getting the drop co-ords but time has
> passed since the drop.

You are right about that. I'm not clear on how input_get_position is 
implemented, did the client record the position of each input, or is 
this some sort of round-trip to the server? If the latter it probably 
should be done differently such as recording it in the motion handler.

I think you need to change all input cursors when dnd_add_item is 
executed for any reason. Any of them may have changed from a pointer to 
a hand. Imagine if there are two pointers and one is used to drop the 
data at the same location the other is pointing at. So there is no need 
to record the last input, you have to change them all.

You have to not change the mouse cursor on move and enter events while 
waiting for the data. You must not lose the dragged flower until the 
actual flower appears.

If there are multiple pointers, it actually looks like it is best if you 
don't change any of them while waiting for the drop data. This will 
reduce the number of transitions they go through. It also appears there 
is a need for stacking order of pointers, the drop one should be on the 
bottom?

To really remove any possibility of flicker the client also needs to 
enter pointer-lock mode (assuming it works as I want, which is to make 
no changes but to stop moving the cursor except in response to 
positioning commands from the client). This will stop the drop cursor 
image from moving away from the drop location if the user moves the 
mouse before the drop finishes. This may need some server support so the 
cursor stops moving at the time of the drop.


More information about the wayland-devel mailing list