<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Guys,<div><br></div><div>I'm using a WebView in my app on mac 10.8 to be used as a text editor, a la mail.app.</div><div><br></div><div>I have most of what I need, but I'm now facing an issue. I try to move around, in editing mode, the content of my webview. If I select text from the webview, it works fine, the text is drawn during the drag under the mouse, the caret moves under the mouse, and the text is moved to where I released my button.</div><div><br></div><div>Now if I try to drag around an instance of my plugin (used to display as an HTML &lt;object/&gt; an icon with its filename) , nothing happens, the drag is not initiated.</div><div><br></div><div>I tried to initiate the drag manually with this piece of code:</div><div><br></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp;&nbsp;<span style="color: #703daa">DOMRange</span> *selection = [<span style="color: #bb2ca2">self</span>.<span style="color: #4f8187">myWebview</span> <span style="color: #3d1d81">selectedDOMRange</span>];</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; <span style="color: #bb2ca2">if</span> (selection == <span style="color: #bb2ca2">nil</span>)</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #bb2ca2">return</span>;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(112, 61, 170); "><span style="color: #000000">&nbsp; &nbsp; </span><span style="color: #bb2ca2">BOOL</span><span style="color: #000000"> selected = ((</span>NSNumber<span style="color: #000000"> *)[</span><span style="color: #bb2ca2">self</span><span style="color: #000000">.</span><span style="color: #4f8187">currentDOMInformations</span><span style="color: #000000"> </span><span style="color: #3d1d81">objectForKey</span><span style="color: #000000">:</span>WebElementIsSelectedKey<span style="color: #000000">]).</span><span style="color: #3d1d81">boolValue</span><span style="color: #000000">;</span></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; <span style="color: #bb2ca2">if</span> (selected)</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; {</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; "><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; &nbsp; &nbsp; NSPasteboard *pboard;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(112, 61, 170); "><span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp; </span>NSArray<span style="color: #000000"> *types = [[</span>NSArray<span style="color: #000000"> </span><span style="color: #3d1d81">alloc</span><span style="color: #000000">] </span><span style="color: #3d1d81">initWithObjects</span><span style="color: #000000">:</span>WebArchivePboardType<span style="color: #000000">, </span><span style="color: #bb2ca2">nil</span><span style="color: #000000">];</span></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(112, 61, 170); "><span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp; pboard = [</span>NSPasteboard<span style="color: #000000"> </span><span style="color: #3d1d81">pasteboardWithName</span><span style="color: #000000">:</span>NSDragPboard<span style="color: #000000">];</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; &nbsp; &nbsp; [pboard <span style="color: #3d1d81">addTypes</span>:types <span style="color: #3d1d81">owner</span>:<span style="color: #bb2ca2">self</span>];</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0); "><span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp; //</span>[pboard clearContents];</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; &nbsp; &nbsp; [pboard <span style="color: #3d1d81">setData</span>:[selection.<span style="color: #3d1d81">webArchive</span> <span style="color: #3d1d81">data</span>] <span style="color: #3d1d81">forType</span>:<span style="color: #703daa">WebArchivePboardType</span>];</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(112, 61, 170); "><span style="color: #000000">&nbsp; &nbsp; &nbsp; &nbsp; </span>NSImage<span style="color: #000000"> *image = [</span>NSImage<span style="color: #000000"> </span><span style="color: #3d1d81">imageNamed</span><span style="color: #000000">:</span>template<span style="color: #000000">];</span></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(0, 132, 0); "><span style="color: #000000">&nbsp;</span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(112, 61, 170); ">NSPoint</span> mouseLocation = theEvent.<span style="color: rgb(61, 29, 129); ">locationInWindow</span>;</div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br class="webkit-block-placeholder"></p><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;<span style="color: rgb(0, 132, 0); ">&nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: rgb(0, 132, 0); ">[</span><span style="color: rgb(187, 44, 162); ">self</span><span style="color: rgb(0, 132, 0); ">.</span><span style="color: rgb(79, 129, 135); ">myWebview</span><span style="color: rgb(0, 132, 0); "> </span><span style="color: rgb(61, 29, 129); ">dragImage</span><span style="color: rgb(0, 132, 0); ">:image </span><span style="color: rgb(61, 29, 129); ">at</span><span style="color: rgb(0, 132, 0); ">:mouseLocation </span><span style="color: rgb(61, 29, 129); ">offset</span><span style="color: rgb(0, 132, 0); ">:</span><span style="color: rgb(61, 29, 129); ">NSMakeSize</span><span style="color: rgb(0, 132, 0); ">(</span><span style="color: rgb(39, 42, 216); ">0</span><span style="color: rgb(0, 132, 0); ">, </span><span style="color: rgb(39, 42, 216); ">0</span><span style="color: rgb(0, 132, 0); ">) </span><span style="color: rgb(61, 29, 129); ">event</span><span style="color: rgb(0, 132, 0); ">:theEvent </span><span style="color: rgb(61, 29, 129); ">pasteboard</span><span style="color: rgb(0, 132, 0); ">:pboard </span><span style="color: rgb(61, 29, 129); ">source</span><span style="color: rgb(0, 132, 0); ">:</span><span style="color: rgb(187, 44, 162); ">self</span><span style="color: rgb(0, 132, 0); ">.</span><span style="color: rgb(79, 129, 135); ">myWebview</span><span style="color: rgb(0, 132, 0); "> </span><span style="color: rgb(61, 29, 129); ">slideBack</span><span style="color: rgb(0, 132, 0); ">:</span><span style="color: rgb(187, 44, 162); ">YES</span><span style="color: rgb(0, 132, 0); ">];</span></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; "><br></div><p style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px; ">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; ">}</div></div><div><br></div><div>It works in the sense that I can now drag the content around (albeit with a default image), but dropping actually copies the content instead of moving it. And the selection ends up garbaged as the drop seems to prevent my webview from processing any new input (keyboard) until I click somewhere in the webview to move the caret.</div><div><br></div><div>I read on StackOverflow that WebView was one of the most complex views in osx, and I tend to agree ;-), so could you let me know if I'm even on the right path?</div><div><br></div><div>Many thanks;</div><div>Olivier./.</div></body></html>