On Tue, Mar 30, 2010 at 12:38 AM, Stef Epardaud <span dir="ltr">&lt;<a href="mailto:stef@epardaud.fr">stef@epardaud.fr</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Mon, Mar 29, 2010 at 02:04:22PM -0700, Daniel Cheng wrote:<br>
&gt;      I&#39;m still trying to use the DnD for a real-world use, and keep hitting<br>
&gt;      problems. This is the HTML 5 draft at 7.9.4 Drag-and-drop processing<br>
&gt;      model:<br>
&gt;      &quot;From this point until the end of the drag-and-drop operation, device<br>
&gt;      input events (e.g. mouse and keyboard events) must be suppressed.&quot;<br>
&gt;<br>
</div><div class="im">&gt;    DragEvent (via MouseEvent) should expose ctrlKey, altKey, metaKey, and<br>
&gt;    shiftKey properties.<br>
<br>
</div>But then it&#39;s up to the developer to detect that the keys weren&#39;t<br>
pressed before (implement keydown events themselves), which is less<br>
practical.<br></blockquote><div><br></div><div>If you&#39;re copying the behavior of file managers, isn&#39;t it simply a matter of setting dropEffect to whatever the current state of the modifier keys are?</div><div><br>
</div><div>function dragOver(e) {</div><div>  if (e.ctrlKey) e.dropEffect = &#39;copy&#39;;</div><div>  else e.dropEffect = &#39;move&#39;;</div><div>  e.preventDefault();<br>}</div><div><br></div><div>I&#39;m not sure how having separate keyboard events would help in this case, since you can&#39;t set dropEffect directly from a keyboard event.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
&gt;    dragstart and drag events are fired at the source node, but since you&#39;re<br>
&gt;    dragging from a non-DOM application, you won&#39;t get any. You should still be<br>
&gt;    getting dragenter / dragover / dragleave / drop if the item is<br>
&gt;    dragged/dropped over a DOM page though. It works for me in WebKit.<br>
<br>
</div>But if I want to be notified that an external application started a drag<br>
in my document, where should I place the listener then? document? body<br>
node?<br></blockquote><div><br></div><div>If an external application initiates a drag in your DOM page via the appropriate method for your platform, it should be the same as if a user initiated it. The dragstart event / drag events should end up getting fired at whatever node the application initiated the drag on. Maybe I&#39;m misunderstanding your question though...</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888">--<br>
Stéphane Epardaud<br>
</font></blockquote></div><br>