[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75

dbates at webkit.org dbates at webkit.org
Thu Oct 29 20:45:39 UTC 2009


The following commit has been merged in the webkit-1.1 branch:
commit fdfa34730ceea0139063ee855e7172864631c8d5
Author: dbates at webkit.org <dbates at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 15 20:39:43 2009 +0000

    2009-10-15  Daniel Bates  <dbates at webkit.org>
    
            Reviewed by Adam Roben.
    
            https://bugs.webkit.org/show_bug.cgi?id=24731
            And
            rdar://problem/5015961
    
            Implements support for DHTML drag-and-drop operations (i.e. ondragstart, ondragend)
            in the Windows build so that it conforms to the Mac OS X build. Hence, dropEffect is
            correctly set.
    
            The WebView and WebDropSource drag-and-drop functions, as called by function
            DoDragDrop in its event loop, neither used the drop effect as specified by
            event.dataTransfer.dropEffect nor respected event.dataTransfer.effectsAllowed.
            Instead, these functions defaulted to some hardcoded drop effect and set of
            allowed drop effects, respectively.
    
            Tests: fast/events/drag-and-drop.html
    
            * WebCoreSupport/WebDragClient.cpp:
            (WebDragClient::startDrag):
            * WebDropSource.cpp:
            (WebDropSource::QueryContinueDrag): Moved call to EventHandler::dragSourceEndedAt
            into method WebDragClient::startDrag.
            * WebDropSource.h:
            * WebView.cpp:
            (WebView::keyStateToDragOperation): Fixes <rdar://problem/5015961>. Determines
            appropriate drop effect from state of keyboard and allowed effects
            m_page->dragController()->sourceDragOperation().
            (WebView::DragEnter):
            (WebView::DragOver):
            (WebView::Drop):
            * WebView.h:
    2009-10-15  Daniel Bates  <dbates at webkit.org>
    
            Reviewed by Adam Roben.
    
            https://bugs.webkit.org/show_bug.cgi?id=24731
            And
            rdar://problem/5015961
    
            Tests that DHTML drag-and-drop works correctly.
    
            Note, this test fails when effectAllowed == "uninitialized" because
            this effect has not been implemented yet (see bug #30291).
    
            * fast/events/drag-and-drop-expected.txt: Added.
            * fast/events/drag-and-drop.html: Added.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49651 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 63a0ba9..51a32c8 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,19 @@
+2009-10-15  Daniel Bates  <dbates at webkit.org>
+
+        Reviewed by Adam Roben.
+
+        https://bugs.webkit.org/show_bug.cgi?id=24731
+        And
+        rdar://problem/5015961
+        
+        Tests that DHTML drag-and-drop works correctly.
+        
+        Note, this test fails when effectAllowed == "uninitialized" because 
+        this effect has not been implemented yet (see bug #30291).
+
+        * fast/events/drag-and-drop-expected.txt: Added.
+        * fast/events/drag-and-drop.html: Added.
+
 2009-10-15  Zan Dobersek  <zandobersek at gmail.com>
 
         Reviewed by Gustavo Noronha.
diff --git a/LayoutTests/fast/events/drag-and-drop-expected.txt b/LayoutTests/fast/events/drag-and-drop-expected.txt
new file mode 100644
index 0000000..586ea0e
--- /dev/null
+++ b/LayoutTests/fast/events/drag-and-drop-expected.txt
@@ -0,0 +1,91 @@
+This test checks that drag-and-drop support works and conforms to the HTML 5 specification.
+For each effectAllowed, iterates through the possible dropEffects: none, copy, move, link, dummy.
+
+Note, this test fails when effectAllowed == "uninitialized" because this effect has not been implemented yet (see bug #30291).
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+When effectAllowed == "uninitialized"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+FAIL event.dataTransfer.dropEffect should be copy. Was none.
+FAIL event.dataTransfer.dropEffect should be move. Was none.
+FAIL event.dataTransfer.dropEffect should be link. Was none.
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "none"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "all"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "copy"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "move"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "link"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "copyMove"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "copyLink"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "linkMove"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+
+When effectAllowed == "dummy"
+
+PASS event.dataTransfer.dropEffect is dropEffectElem.options[dropEffectElem.selectedIndex].value
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "none"
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/events/drag-and-drop.html b/LayoutTests/fast/events/drag-and-drop.html
new file mode 100644
index 0000000..54d29bc
--- /dev/null
+++ b/LayoutTests/fast/events/drag-and-drop.html
@@ -0,0 +1,185 @@
+<html>
+<head>
+<link rel="stylesheet" href="../js/resources/js-test-style.css">
+<script src="../js/resources/js-test-pre.js"></script>
+<style>
+#dropTarget, #dragMe { text-align: center; display: table-cell; vertical-align: middle }
+#dropTarget {width: 256px; height: 256px; border: 1px dashed}
+#dragMe {-webkit-user-drag: element; -webkit-user-select: none; background: #ff0000; width: 64px; height: 64px; color: white}
+</style>
+<script>
+    var dragMe;
+    var dropTarget;
+    var effectAllowedElem;
+    var dropEffectElem;
+    var consoleElm;
+    var event;
+    
+    window.onload = function()
+    {
+        dragMe = document.getElementById("dragMe");
+        dropTarget = document.getElementById("dropTarget");
+        effectAllowedElem = document.getElementById("effectAllowed");
+        dropEffectElem = document.getElementById("dropEffect");
+        consoleElm = document.getElementById("console");
+        
+        if (!dragMe || !dropTarget || !effectAllowedElem || !dropEffectElem || !consoleElm)
+            return;
+        
+        dragMe.ondragstart = dragStart;
+        dragMe.ondragend = dragEnd;
+        
+        dropTarget.ondragenter = dragEntered;
+        dropTarget.ondragover = dragOver;
+        dropTarget.ondrop = drop;
+        
+        runTest();
+    }
+    
+    function dragStart(e)
+    {
+        event = e;
+        e.dataTransfer.effectAllowed = effectAllowedElem.options[effectAllowedElem.selectedIndex].value;
+        e.dataTransfer.setData('Text', e.target.textContent);
+    }
+    
+    function dragEnd(e)
+    {
+        checkDragState(e);
+        return;
+    }
+    
+    function dragEntered(e)
+    {
+        dragEnteredAndUpdated(e);
+    }
+    
+    function dragOver(e)
+    {
+        dragEnteredAndUpdated(e);
+    }
+    
+    function dragEnteredAndUpdated(e)
+    {
+        event = e;
+        e.dataTransfer.dropEffect = dropEffectElem.options[dropEffectElem.selectedIndex].value;
+        cancelDrag(e);
+    }
+    
+    function drop(e)
+    {
+        cancelDrag(e);
+    }
+    
+    function cancelDrag(e)
+    {
+        if (e.preventDefault)
+            e.preventDefault();
+        else {
+            // Assume this script is executing within Internet Explorer
+            e.returnValue = false;
+        }
+    }
+    
+    function checkDragState(e)
+    {
+        event = e;
+        var chosenDropEffect = dropEffectElem.options[dropEffectElem.selectedIndex].value;
+        var chosenEffectAllowed = effectAllowedElem.options[effectAllowedElem.selectedIndex].value;
+        var actualDropEffect = e.dataTransfer.dropEffect;
+        
+        if (isDropEffectAllowed(chosenDropEffect, chosenEffectAllowed))
+            shouldEvaluateTo('event.dataTransfer.dropEffect', 'dropEffectElem.options[dropEffectElem.selectedIndex].value');
+        else
+            shouldBeEqualToString('event.dataTransfer.dropEffect', 'none');
+            
+    }
+    
+    function isDropEffectAllowed(chosenDropEffect, allowedDropEffect) {
+        // Extracted from the HTML 5 drag-and-drop section, http://dev.w3.org/html5/spec/Overview.html#dnd
+        if (chosenDropEffect == "none")
+            return true;
+        if (chosenDropEffect == "copy" && ["copy", "copyLink", "copyMove", "uninitialized", "all"].indexOf(allowedDropEffect) != -1)
+            return true;
+        if (chosenDropEffect == "move" && ["move", "copyMove", "linkMove", "uninitialized", "all"].indexOf(allowedDropEffect) != -1)
+            return true;
+        if (chosenDropEffect == "link" && ["link", "copyLink", "linkMove", "uninitialized", "all"].indexOf(allowedDropEffect) != -1)
+            return true;
+        return false;
+    }
+
+    function runTest()
+    {
+        if (!window.eventSender)
+            return;
+            
+        if (window.layoutTestController)
+            layoutTestController.dumpAsText();
+            
+        var startX = dragMe.offsetLeft + 10;
+        var startY = dragMe.offsetTop + dragMe.offsetHeight / 2;
+        var endX = dropTarget.offsetLeft + 10;
+        var endY = dropTarget.offsetTop + dropTarget.offsetHeight / 2;
+        
+        var numEffectAllowed = effectAllowedElem.options.length;
+        var numEffects = dropEffectElem.options.length;
+        
+        for (var i = 0; i < numEffectAllowed; ++i) {
+            effectAllowedElem.options[i].selected = true;
+            debug('<br />When effectAllowed == "' + effectAllowedElem.options[i].value + '"<br />');
+            for (var j = 0; j < numEffects; ++j) {
+                dropEffectElem.options[j].selected = true;
+                eventSender.mouseMoveTo(startX, startY);
+                eventSender.mouseDown();
+                eventSender.leapForward(100);
+                eventSender.mouseMoveTo(endX, endY);
+                eventSender.mouseUp();
+            }
+        }
+        var testContainer = document.getElementById("test-container");
+        if (testContainer)
+            document.body.removeChild(testContainer);
+        debug('<br /><span class="pass">TEST COMPLETE</span>');
+    }
+</script>
+</head>
+<body>
+    <p id="description"></p>
+    <div id="test-container">
+        <label for="effectAllowed">effectAllowed</label> <select id="effectAllowed">
+            <option value="uninitialized">Uninitialized</option>
+            <option value="none">None</option>
+            <option value="all">All</option>
+            <option value="copy">Copy</option>
+            <option value="move">Move</option>
+            <option value="link">Link</option>
+            <option value="copyMove">CopyMove</option>
+            <option value="copyLink">CopyLink</option>
+            <option value="linkMove">LinkMove</option>
+            <option value="dummy">Nonexistent (Dummy) Effect</option>
+        </select>
+        <br/><br/>
+        <div id="dropTarget">Drop the red square onto me.<br/><br/>
+            <label for="dropEffect">Expects dropEffect</label> <select id="dropEffect">
+                <option value="none">None</option>
+                <option value="copy">Copy</option>
+                <option value="move">Move</option>
+                <option value="link">Link</option>
+                <option value="dummy">Nonexistent (Dummy) Effect</option>
+            </select>
+        </div>
+        <hr/>
+        <p>Items that can be dragged to the drop target:</p>
+        <div id="dragMe" draggable="true">Square</div>
+        <hr/>
+    </div>
+    <div id="console"></div>
+    <script>
+        description("This test checks that drag-and-drop support works and conforms to the HTML 5 specification.<br/>" +
+                    "For each effectAllowed, iterates through the possible dropEffects: none, copy, move, link, dummy.<br/><br/>" +
+                    "Note, this test fails when effectAllowed == &quot;uninitialized&quot; because this effect has not been " +
+                    "implemented yet (see bug #30291).");
+        var successfullyParsed = true;
+    </script>
+</body>
+</html>
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index 16ca4cc..ec4e422 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,38 @@
+2009-10-15  Daniel Bates  <dbates at webkit.org>
+
+        Reviewed by Adam Roben.
+
+        https://bugs.webkit.org/show_bug.cgi?id=24731
+        And
+        rdar://problem/5015961
+        
+        Implements support for DHTML drag-and-drop operations (i.e. ondragstart, ondragend)
+        in the Windows build so that it conforms to the Mac OS X build. Hence, dropEffect is
+        correctly set.
+        
+        The WebView and WebDropSource drag-and-drop functions, as called by function
+        DoDragDrop in its event loop, neither used the drop effect as specified by
+        event.dataTransfer.dropEffect nor respected event.dataTransfer.effectsAllowed.
+        Instead, these functions defaulted to some hardcoded drop effect and set of
+        allowed drop effects, respectively.
+
+        Tests: fast/events/drag-and-drop.html
+
+        * WebCoreSupport/WebDragClient.cpp:
+        (WebDragClient::startDrag):
+        * WebDropSource.cpp:
+        (WebDropSource::QueryContinueDrag): Moved call to EventHandler::dragSourceEndedAt
+        into method WebDragClient::startDrag.
+        * WebDropSource.h:
+        * WebView.cpp:
+        (WebView::keyStateToDragOperation): Fixes <rdar://problem/5015961>. Determines
+        appropriate drop effect from state of keyboard and allowed effects
+        m_page->dragController()->sourceDragOperation().
+        (WebView::DragEnter):
+        (WebView::DragOver):
+        (WebView::Drop):
+        * WebView.h:
+
 2009-10-14  Adam Roben  <aroben at apple.com>
 
         Windows build fix
diff --git a/WebKit/win/WebCoreSupport/WebDragClient.cpp b/WebKit/win/WebCoreSupport/WebDragClient.cpp
index 840fca1..8451bd6 100644
--- a/WebKit/win/WebCoreSupport/WebDragClient.cpp
+++ b/WebKit/win/WebCoreSupport/WebDragClient.cpp
@@ -172,16 +172,27 @@ void WebDragClient::startDrag(DragImageRef image, const IntPoint& imageOrigin, c
         }
 
         DWORD okEffect = draggingSourceOperationMaskToDragCursors(m_webView->page()->dragController()->sourceDragOperation());
-        DWORD effect;
+        DWORD effect = DROPEFFECT_NONE;
         COMPtr<IWebUIDelegate> ui;
+        HRESULT hr = E_NOTIMPL;
         if (SUCCEEDED(m_webView->uiDelegate(&ui))) {
             COMPtr<IWebUIDelegatePrivate> uiPrivate;
             if (SUCCEEDED(ui->QueryInterface(IID_IWebUIDelegatePrivate, (void**)&uiPrivate)))
-                if (SUCCEEDED(uiPrivate->doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &effect)))
-                    return;
+                hr = uiPrivate->doDragDrop(m_webView, dataObject.get(), source.get(), okEffect, &effect);
         }
-
-        DoDragDrop(dataObject.get(), source.get(), okEffect, &effect);
+        if (hr == E_NOTIMPL)
+            hr = DoDragDrop(dataObject.get(), source.get(), okEffect, &effect);
+
+        DragOperation operation = DragOperationNone;
+        if (hr == DRAGDROP_S_DROP) {
+            if (effect & DROPEFFECT_COPY)
+                operation = DragOperationCopy;
+            else if (effect & DROPEFFECT_LINK)
+                operation = DragOperationLink;
+            else if (effect & DROPEFFECT_MOVE)
+                operation = DragOperationMove;
+        }
+        frame->eventHandler()->dragSourceEndedAt(generateMouseEvent(m_webView, false), operation);
     }
 }
 
diff --git a/WebKit/win/WebDropSource.cpp b/WebKit/win/WebDropSource.cpp
index 63465e2..5c26b37 100644
--- a/WebKit/win/WebDropSource.cpp
+++ b/WebKit/win/WebDropSource.cpp
@@ -106,10 +106,6 @@ STDMETHODIMP WebDropSource::QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyS
 {
     if (fEscapePressed || !(grfKeyState & (MK_LBUTTON|MK_RBUTTON))) {
         m_dropped = !fEscapePressed;
-        if (Page* page = m_webView->page())
-            if (Frame* frame = page->mainFrame()) 
-                //FIXME: We need to figure out how to find out what actually happened in the drag <rdar://problem/5015961>
-                frame->eventHandler()->dragSourceEndedAt(generateMouseEvent(m_webView.get(), false), fEscapePressed ? DragOperationNone : DragOperationCopy);
         return fEscapePressed? DRAGDROP_S_CANCEL : DRAGDROP_S_DROP;
     } else if (Page* page = m_webView->page())
         if (Frame* frame = page->mainFrame()) 
diff --git a/WebKit/win/WebDropSource.h b/WebKit/win/WebDropSource.h
index 4a969ef..5f06355 100644
--- a/WebKit/win/WebDropSource.h
+++ b/WebKit/win/WebDropSource.h
@@ -32,6 +32,12 @@
 
 class WebView;
 
+namespace WebCore {
+    class PlatformMouseEvent;
+}
+
+WebCore::PlatformMouseEvent generateMouseEvent(WebView*, bool isDrag);
+
 class WebDropSource : public IDropSource
 {
 public:
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index 3798528..d6915ba 100644
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -4644,11 +4644,25 @@ static DWORD dragOperationToDragCursor(DragOperation op) {
     return res;
 }
 
-static DragOperation keyStateToDragOperation(DWORD) {
-    //FIXME: This is currently very simple, it may need to actually
-    //work out an appropriate DragOperation in future -- however this
-    //behaviour appears to match FireFox
-    return (DragOperation)(DragOperationCopy | DragOperationLink);
+DragOperation WebView::keyStateToDragOperation(DWORD grfKeyState) const
+{
+    if (!m_page)
+        return DragOperationNone;
+
+    // Conforms to Microsoft's key combinations as documented for 
+    // IDropTarget::DragOver. Note, grfKeyState is the current 
+    // state of the keyboard modifier keys on the keyboard. See:
+    // <http://msdn.microsoft.com/en-us/library/ms680129(VS.85).aspx>.
+    DragOperation operation = m_page->dragController()->sourceDragOperation();
+
+    if ((grfKeyState & (MK_CONTROL | MK_SHIFT)) == (MK_CONTROL | MK_SHIFT))
+        operation = DragOperationLink;
+    else if ((grfKeyState & MK_CONTROL) == MK_CONTROL)
+        operation = DragOperationCopy;
+    else if ((grfKeyState & MK_SHIFT) == MK_SHIFT)
+        operation = DragOperationGeneric;
+
+    return operation;
 }
 
 HRESULT STDMETHODCALLTYPE WebView::DragEnter(
@@ -4665,6 +4679,7 @@ HRESULT STDMETHODCALLTYPE WebView::DragEnter(
         IntPoint(pt.x, pt.y), keyStateToDragOperation(grfKeyState));
     *pdwEffect = dragOperationToDragCursor(m_page->dragController()->dragEntered(&data));
 
+    m_lastDropEffect = *pdwEffect;
     m_dragData = pDataObject;
 
     return S_OK;
@@ -4685,6 +4700,7 @@ HRESULT STDMETHODCALLTYPE WebView::DragOver(
     } else
         *pdwEffect = DROPEFFECT_NONE;
 
+    m_lastDropEffect = *pdwEffect;
     return S_OK;
 }
 
@@ -4709,7 +4725,7 @@ HRESULT STDMETHODCALLTYPE WebView::Drop(
         m_dropTargetHelper->Drop(pDataObject, (POINT*)&pt, *pdwEffect);
 
     m_dragData = 0;
-    *pdwEffect = DROPEFFECT_NONE;
+    *pdwEffect = m_lastDropEffect;
     POINTL localpt = pt;
     ::ScreenToClient(m_viewWindow, (LPPOINT)&localpt);
     DragData data(pDataObject, IntPoint(localpt.x, localpt.y), 
diff --git a/WebKit/win/WebView.h b/WebKit/win/WebView.h
index f4459fd..b70ddc2 100644
--- a/WebKit/win/WebView.h
+++ b/WebKit/win/WebView.h
@@ -872,6 +872,14 @@ private:
     void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect, WindowsToPaint);
     void updateBackingStore(WebCore::FrameView*, HDC = 0, bool backingStoreCompletelyDirty = false, WindowsToPaint = PaintWebViewOnly);
 
+    WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState) const;
+
+    // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect. 
+    // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect. 
+    // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
+    // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
+    DWORD m_lastDropEffect;
+
 protected:
     HIMC getIMMContext();
     void releaseIMMContext(HIMC);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list