WebCore/ChangeLog

 12009-07-01 Erik Arvidsson <arv@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 [Win] HTML5 Drag and drop, dragend is not fired when pressing Esc
 6 https://bugs.webkit.org/show_bug.cgi?id=26699
 7
 8 * manual-tests/drag-escape.html: Added.
 9 * page/EventHandler.cpp:
 10 (WebCore::EventHandler::dragSourceEndedAt):
 11
1122009-06-30 Eric Carlson <eric.carlson@apple.com>
213
314 Reviewed by Oliver Hunt.
45412

WebCore/manual-tests/drag-escape.html

 1<!DOCTYPE html>
 2<html>
 3<head>
 4<script>
 5
 6var expectedEvents = ["dragstart", "dragend"];
 7var i = 0;
 8
 9function recordEvent(e) {
 10 log(e.type);
 11 if (e.type !== expectedEvents[i]) {
 12 log("FAIL - expected " + expectedEvents[i] + " but got " + e.type);
 13 } else if (i == expectedEvents.length - 1) {
 14 log("SUCCESS");
 15 } else {
 16 i++;
 17 }
 18}
 19
 20
 21function log(msg) {
 22 var tn = document.createTextNode(msg + "\n");
 23 document.getElementById("log").appendChild(tn);
 24}
 25
 26function dragStart(e) {
 27 recordEvent(e);
 28}
 29
 30document.ondragend = function(e) {
 31 recordEvent(e);
 32};
 33
 34document.ondrop = function(e) {
 35 log("FAIL - we should not get a " + e.type);
 36};
 37
 38document.ondragenter = document.ondragover = function(e) {
 39 e.preventDefault();
 40};
 41
 42
 43</script>
 44</head>
 45<body>
 46 <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=26699">https://bugs.webkit.org/show_bug.cgi?id=26699</a></p>
 47
 48 <p>Instructions: </p>
 49
 50 <p>Drag the "Drag Me!" link below</p>
 51 <p>Press escape</p>
 52
 53 <a id="test-link" href="http://webkit.org" ondragstart="dragStart(event)">Drag Me!</a>
 54
 55 <pre id="log"></pre>
 56</body>
 57</html>
0

WebCore/page/EventHandler.cpp

@@void EventHandler::dragSourceEndedAt(con
21022102 }
21032103 freeClipboard();
21042104 dragState().m_dragSrc = 0;
 2105 // In case the drag was ended due to an escape key press we need to ensure
 2106 // that consecutive mousemove events don't reinitiate the drag and drop.
 2107 m_mouseDownMayStartDrag = false;
21052108}
21062109
21072110// returns if we should continue "default processing", i.e., whether eventhandler canceled
45393

WebKit/win/ChangeLog

 12009-07-01 Erik Arvidsson <arv@chromium.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 [Win] HTML5 Drag and drop, dragend is not fired when pressing Esc
 6 https://bugs.webkit.org/show_bug.cgi?id=26699
 7
 8 * WebDropSource.cpp:
 9 (WebDropSource::QueryContinueDrag):
 10
1112009-06-29 David Hyatt <hyatt@apple.com>
212
313 Fix Windows bustage. Missed two configurations for enabling DATAGRID.
45412

WebKit/win/WebDropSource.cpp

@@PlatformMouseEvent generateMouseEvent(We
104104
105105STDMETHODIMP WebDropSource::QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState)
106106{
107  if(fEscapePressed)
108  return DRAGDROP_S_CANCEL;
109 
110  if(!(grfKeyState & (MK_LBUTTON|MK_RBUTTON))) {
111  m_dropped = true;
 107 if (fEscapePressed || !(grfKeyState & (MK_LBUTTON|MK_RBUTTON))) {
 108 m_dropped = !fEscapePressed;
112109 if (Page* page = m_webView->page())
113110 if (Frame* frame = page->mainFrame())
114111 //FIXME: We need to figure out how to find out what actually happened in the drag <rdar://problem/5015961>
115  frame->eventHandler()->dragSourceEndedAt(generateMouseEvent(m_webView.get(), false), DragOperationCopy);
116  return DRAGDROP_S_DROP;
 112 frame->eventHandler()->dragSourceEndedAt(generateMouseEvent(m_webView.get(), false), fEscapePressed ? DragOperationNone : DragOperationCopy);
 113 return fEscapePressed? DRAGDROP_S_CANCEL : DRAGDROP_S_DROP;
117114 } else if (Page* page = m_webView->page())
118115 if (Frame* frame = page->mainFrame())
119116 frame->eventHandler()->dragSourceMovedTo(generateMouseEvent(m_webView.get(), true));
120117
121118 return S_OK;
122 
123119}
124120
125121STDMETHODIMP WebDropSource::GiveFeedback(DWORD)
45393