[PATCH] protocol: Add DnD actions
carlosg at gnome.org
Thu Apr 9 03:12:18 PDT 2015
On mié, 2015-04-08 at 14:18 -0700, Bill Spitzak wrote:
> > * 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 .
> I don't understand at all. Your proposal also requires the drag
> 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).
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
It perhaps confuses you that "notify_actions" can be called multiple
times on both sides, that would be barely useful on the drag source
tbh, too late to add arguments to start_drag() though. It's more of a
necessity on the dest side, where toolkits have to update the mask as
the pointer drifts across widgets. Changes in either the action mask
from any side or the action picked by the compositor must always
result in "action" events being sent to both sides.
One thing the drag source stays responsible of is the pointer cursor,
so it can change on reaction to wl_data_source.action.
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
More information about the wayland-devel