[PATCH] protocol: Add DnD actions

Bill Spitzak spitzak at gmail.com
Wed Apr 8 14:18:14 PDT 2015

On 04/08/2015 07:46 AM, Carlos Garnacho wrote:

I may be missing something. As far as I can tell your proposal is that 
the source and destination send sets of actions to the compositor, the 
compositor then intersects the sets, and sends the result of the 
intersection to the source and destination.

My proposal is that only the source sends a list of actions, and the 
compositor sends that list to the destination. The destination 
intersects with it's list internally and sends the result of the 
intersection to the compositor, which then sends it back to the source.

Otherwise everything is identical to what you are proposing.

>        * How are actions conveyed? do we encode these in the mimetype
>          string? how do we standardize on the actions? how do we make
>          that backwards compatible?

The exact same way they are being conveyed by your proposal. You have 
both the source and destination sending a list of actions to the 
compositor, use the same api here.

>        * How do drag destinations react to unhandled options? Say a
>          drag source appends "?action=ask" when you press Alt and the
>          drag destination only knows copy/move, how does this fallback
>          to an action that both parts recognize?

Since the destination figures out which of the offered actions to use, 
it would not select this one. It would select another one. If it does 
not like any of them then we are in the exact same state as your 
proposal when the intersection is empty.

>        * Additionally to modifier state, there's other
>          keyboard/accessibility features as DnD is done in GNOME/GTK+
>          (eg. DnD driven by cursor keys), these must be implemented on
>          the compositor, this sounds like conflicting with the
>          expectation in your proposal to have the drag source receive
>          key events [1].

I don't understand at all. Your proposal also requires the drag source 
to receive key events, since it can use those to change the set of 
actions (for instance to add the "ask" action like you said in the 
previous question).

More information about the wayland-devel mailing list