[PATCH] protocol: Add DnD actions
Bill Spitzak
spitzak at gmail.com
Thu Apr 9 16:07:01 PDT 2015
On 04/09/2015 03:12 AM, Carlos Garnacho wrote:
> No, that's precisely why my proposal involves the compositor at all,
> the source offers all actions it can handle, after
> data_device.data_offer/enter, the offer does likewise.
>
> The compositor has then a map of the actions that both parts agree on,
> and can toggle actions when the user presses modifier keys, but these
> modifier keys should only be honored if both parts recognize such
> option, it should always fall back into an action that both parts
> agree on, or the drag will be cancelled. Note that this way the
> compositor is the sole handler of pointer and keyboard events during
> DnD.
Are you proposing that it is the compositor's job to understand what
modifier keys correspond to which actions?
I think I am failing to describe what I am proposing. Lets try to make
this very simple. There are two lists of actions, I'll call them A and
B. One of them is from the source, one from the destination. There is a
function on A and B that I will call f(A,B) which returns a selected
action, which I will call C.
You are proposing:
source sends A to compositor
dest sends B to compositor
compositor does C = f(A,B)
compositor sends C to source
compositor sends C to dest
My proposal:
source sends A to compositor
compositor sends A to dest
dest does C = f(A,B)
dest sends C to compositor
compositor sends C to source
The purpose is to move the implementation of f(A,B) out of the
compositor and into the clients (removing the transmission of B, which
changes rapidly as the target moves between widgets, is also helpful).
I figured shift keys would work by having the source rearrange the list
of actions to put the actions selected by shift first, remove actions
prevented by shift, and leave the fallback ones at the end. It assumes
the dest will pick the first match.
I think what you are saying is that f() also depends on some state that
only the compositor knows. Thus it is f(A,B,state). However the
compositor could send state along with A to the dest.
More information about the wayland-devel
mailing list