This is still bothering me as being much too complicated.
I think a list of actions can be sent from the DnD source to the target, and the target selects one. There is no need for the compositor to do any intersection of the sets and there is no need to communicate the set of target actions to the compositor.
Your concerns about shift state being handled by the source are misplaced. This would not change at all under what I am proposing, the source could still use the shift state to change the list of actions.
My proposal is basically to take yours, and remove the ability for the target to send a set of actions that the compositor then interesect with the source list. Instead this "intersection" is done by the target, and the target sends *one* action (or "none") indicating the result of the intersection.
Unless you want the compositor to draw user interface to allow the user to choose the action, which seems very much a bad idea, I cannot see what your proposal will allow to happen that this simplified version would not.
I do believe any kind of popup (like a menu for choosing "move or copy") would have to be done by the target. This is because the target may have extra actions that the source does not care about or does not know about, such as "insert" verses "replace". The popup would grab the keyboard focus but when dismissed it may go back to a different client than the target.
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel