On Jul 4, 2015, at 8:36 AM, Damjan Jovanovic damjan.jov@gmail.com wrote:
Implements DoDragDrop on top of XDND. While some of DoDragDrop() and supporting functions are copied from ole32, they were modified to be non-blocking and event-driven.
The clipboard is patched to allow searching its clipboard formats for X11 atoms, export data in X11 format, and forward selection requests for the XdndSelection selection to XDND.
We support XDND version 3 to 5 (although we still need XdndProxy support for version 4). XdndPosition messages are rate-limited to at most 1 unreplied message and at least every 50 milliseconds apart, so that we don't flood slow X11 clients like the spec warns.
In set_XdndTypeList() and X11DRV_XDND_SelectionRequest(), you use FIXMEs for most unsupported format properties, but just a TRACE for dwAspect != DVASPECT_CONTENT. Is there a reason for that?
* When we ask for feedback from the drop source, sometimes it will
* do all the necessary work and sometimes it will not handle it
* when that's the case, we must display the standard drag and drop
* cursors.
Copy-pasted typo. There should be a period after "handle it" and we should capitalize "when that's the case". (Or change to "When it doesn't handle it" to be clearer.)
- /*
* All the return valued will stop the operation except the S_OK
* return value.
*/
Copy-pasted typo: "return valued" should be "return values".
/*
* When keyboard messages are sent to windows on this thread, we
* want to ignore notify the drop source that the state changed.
* in the case of the Escape key, we also notify the drop source
* we give it a special meaning.
*/
Copy-pasted typo: "ignore notify". I'm not sure if the fix is to just drop "ignore" or to expand the sentence to explain that we swallow key events except to notify the drop source about the Escape key.
-Ken