<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[215021] releases/WebKitGTK/webkit-2.14</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/215021">215021</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2017-04-06 05:33:22 -0700 (Thu, 06 Apr 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/212881">r212881</a> - [GTK] Drag and drop is always moving the content even if copy is requested
https://bugs.webkit.org/show_bug.cgi?id=168424
Reviewed by Carlos Garcia Campos.
Source/WebCore:
Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).
Test: editing/pasteboard/drag-drop-copy-content.html
* page/gtk/DragControllerGtk.cpp:
(WebCore::DragController::isCopyKeyDown):
Source/WebKit2:
Drag and drop is always moving the content around even if the copy is
requested (i.e. by pressing the Control key).
* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::drop):
LayoutTests:
Mark the editing/pasteboard/drag-drop-copy-content.html as failing
as WTR doesn't know how to perform drag and drop in WK2. Also the
test does not pass on the mac WK1, created a bug for it.
* platform/efl/TestExpectations:
* platform/gtk-wayland/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit214LayoutTestsChangeLog">releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit214LayoutTestsplatformgtkTestExpectations">releases/WebKitGTK/webkit-2.14/LayoutTests/platform/gtk/TestExpectations</a></li>
<li><a href="#releasesWebKitGTKwebkit214LayoutTestsplatformmacwk2TestExpectations">releases/WebKitGTK/webkit-2.14/LayoutTests/platform/mac-wk2/TestExpectations</a></li>
<li><a href="#releasesWebKitGTKwebkit214SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit214SourceWebCorepagegtkDragControllerGtkcpp">releases/WebKitGTK/webkit-2.14/Source/WebCore/page/gtk/DragControllerGtk.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit214SourceWebKit2ChangeLog">releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit214SourceWebKit2UIProcessgtkDragAndDropHandlercpp">releases/WebKitGTK/webkit-2.14/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit214LayoutTestseditingpasteboarddragdropcopycontentexpectedtxt">releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content-expected.txt</a></li>
<li><a href="#releasesWebKitGTKwebkit214LayoutTestseditingpasteboarddragdropcopycontenthtml">releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit214LayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/ChangeLog        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2017-02-23 Tomas Popela <tpopela@redhat.com>
+
+ [GTK] Drag and drop is always moving the content even if copy is requested
+ https://bugs.webkit.org/show_bug.cgi?id=168424
+
+ Reviewed by Carlos Garcia Campos.
+
+ Mark the editing/pasteboard/drag-drop-copy-content.html as failing
+ as WTR doesn't know how to perform drag and drop in WK2. Also the
+ test does not pass on the mac WK1, created a bug for it.
+
+ * platform/efl/TestExpectations:
+ * platform/gtk-wayland/TestExpectations:
+ * platform/gtk/TestExpectations:
+ * platform/mac-wk2/TestExpectations:
+ * platform/mac/TestExpectations:
+
</ins><span class="cx"> 2017-02-09 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Crash under FormSubmission::create()
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214LayoutTestseditingpasteboarddragdropcopycontentexpectedtxt"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content-expected.txt (0 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content-expected.txt         (rev 0)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content-expected.txt        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+This tests the generic drag and drop where the copy of the content is requested (pressing Control on WebKitGTK+ or Alt on Mac when dropping the content) instead of the move. To manually run the test, select the "Text" in the textarea and drag it to the input on the left. When dropping the content request the copy operation. The test is passed if the input will contain "Text" and the textarea "Text!" strings.
+
+PASS: input
+PASS: textarea
+
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit214LayoutTestseditingpasteboarddragdropcopycontenthtml"></a>
<div class="addfile"><h4>Added: releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content.html (0 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content.html         (rev 0)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/editing/pasteboard/drag-drop-copy-content.html        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+<html>
+<head>
+ <script src="../../resources/platform-helper.js"></script>
+</head>
+<body>
+<script>
+function log(msg) {
+ var console = document.getElementById('console');
+ var line = document.createElement('div');
+ line.textContent = msg;
+ console.appendChild(line);
+}
+
+function runTest() {
+ if (!window.testRunner)
+ return;
+
+ testRunner.dumpAsText();
+
+ // Drag a word in the textarea
+ var textarea = document.getElementById("textarea");
+ textarea.setSelectionRange(0, 4);
+ x = textarea.offsetLeft + 10;
+ y = textarea.offsetTop + textarea.offsetHeight / 2;
+ eventSender.mouseMoveTo(x, y);
+ eventSender.mouseDown();
+ // and drop it off to the input field
+ var input = document.getElementById("destination");
+ eventSender.leapForward(500);
+ eventSender.mouseMoveTo(input.offsetLeft + 10, input.offsetTop + input.offsetHeight / 2);
+ if (isGtk())
+ eventSender.mouseUp(0, ['ctrlKey']);
+ else
+ eventSender.mouseUp(0, ['altKey']);
+
+ var result = input.value;
+ log(result == 'Text' ? 'PASS: input' : 'FAIL: expected value="Text", actual value="' + result + '"');
+ var result = textarea.value;
+ log(result == 'Text!' ? 'PASS: textarea' : 'FAIL: expected value="Text!", actual value="' + result + '"');
+}
+</script>
+<p>This tests the generic drag and drop where the copy of the content is
+requested (pressing Control on WebKitGTK+ or Alt on Mac when dropping the
+content) instead of the move. To manually run the test, select the "Text"
+in the textarea and drag it to the input on the left. When dropping the
+content request the copy operation. The test is passed if the input will
+contain "Text" and the textarea "Text!" strings.</p>
+<div id=console></div>
+<input id=destination>
+<textarea id=textarea rows=1>Text!</textarea>
+<script>runTest();</script>
+</body>
+</html>
</ins></span></pre></div>
<a id="releasesWebKitGTKwebkit214LayoutTestsplatformgtkTestExpectations"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/platform/gtk/TestExpectations (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/LayoutTests/platform/gtk/TestExpectations        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/platform/gtk/TestExpectations        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -1732,6 +1732,7 @@
</span><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-and-drop-image-contenteditable.html [ Failure Timeout ]
</span><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-and-drop-inputimage-contenteditable.html [ Failure Timeout ]
</span><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-and-drop-objectimage-contenteditable.html [ Failure Timeout ]
</span><ins>+webkit.org/b/157179 editing/pasteboard/drag-drop-copy-content.html [ Failure ]
</ins><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-drop-input-textarea.html [ Failure ]
</span><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-drop-modifies-page.html [ Failure ]
</span><span class="cx"> webkit.org/b/157179 editing/pasteboard/drag-drop-url-text.html [ Failure ]
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214LayoutTestsplatformmacwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/LayoutTests/platform/mac-wk2/TestExpectations (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/LayoutTests/platform/mac-wk2/TestExpectations        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/LayoutTests/platform/mac-wk2/TestExpectations        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx"> editing/pasteboard/drag-and-drop-inputimage-contenteditable.html
</span><span class="cx"> editing/pasteboard/drag-and-drop-objectimage-contenteditable.html
</span><span class="cx"> editing/pasteboard/drag-and-drop-attachment-contenteditable.html
</span><ins>+editing/pasteboard/drag-drop-copy-content.html
</ins><span class="cx"> editing/pasteboard/drag-drop-dead-frame.html
</span><span class="cx"> editing/pasteboard/drag-drop-input-textarea.html
</span><span class="cx"> editing/pasteboard/drag-drop-list.html
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2017-02-23 Tomas Popela <tpopela@redhat.com>
+
+ [GTK] Drag and drop is always moving the content even if copy is requested
+ https://bugs.webkit.org/show_bug.cgi?id=168424
+
+ Reviewed by Carlos Garcia Campos.
+
+ Drag and drop is always moving the content around even if the copy is
+ requested (i.e. by pressing the Control key).
+
+ Test: editing/pasteboard/drag-drop-copy-content.html
+
+ * page/gtk/DragControllerGtk.cpp:
+ (WebCore::DragController::isCopyKeyDown):
+
</ins><span class="cx"> 2017-02-09 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Crash under FormSubmission::create()
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214SourceWebCorepagegtkDragControllerGtkcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/page/gtk/DragControllerGtk.cpp (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebCore/page/gtk/DragControllerGtk.cpp        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/page/gtk/DragControllerGtk.cpp        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -46,9 +46,9 @@
</span><span class="cx">
</span><span class="cx"> const float DragController::DragImageAlpha = 0.75f;
</span><span class="cx">
</span><del>-bool DragController::isCopyKeyDown(DragData&)
</del><ins>+bool DragController::isCopyKeyDown(DragData& dragData)
</ins><span class="cx"> {
</span><del>- return false;
</del><ins>+ return dragData.flags() & DragApplicationIsCopyKeyDown;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> DragOperation DragController::dragOperation(DragData& dragData)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214SourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2017-02-23 Tomas Popela <tpopela@redhat.com>
+
+ [GTK] Drag and drop is always moving the content even if copy is requested
+ https://bugs.webkit.org/show_bug.cgi?id=168424
+
+ Reviewed by Carlos Garcia Campos.
+
+ Drag and drop is always moving the content around even if the copy is
+ requested (i.e. by pressing the Control key).
+
+ * UIProcess/gtk/DragAndDropHandler.cpp:
+ (WebKit::DragAndDropHandler::drop):
+
</ins><span class="cx"> 2017-02-27 Carlos Garcia Campos <cgarcia@igalia.com>
</span><span class="cx">
</span><span class="cx"> [GTK] Flickering when leaving accelerated compositing mode
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit214SourceWebKit2UIProcessgtkDragAndDropHandlercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp (215020 => 215021)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp        2017-04-06 12:29:17 UTC (rev 215020)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/UIProcess/gtk/DragAndDropHandler.cpp        2017-04-06 12:33:22 UTC (rev 215021)
</span><span class="lines">@@ -289,7 +289,10 @@
</span><span class="cx">
</span><span class="cx"> droppingContext->dropHappened = true;
</span><span class="cx">
</span><del>- DragData dragData(droppingContext->selectionData.ptr(), position, convertWidgetPointToScreenPoint(m_page.viewWidget(), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context)));
</del><ins>+ uint32_t flags = 0;
+ if ((gdk_drag_context_get_selected_action(context) & GDK_ACTION_COPY))
+ flags |= WebCore::DragApplicationIsCopyKeyDown;
+ DragData dragData(droppingContext->selectionData.ptr(), position, convertWidgetPointToScreenPoint(m_page.viewWidget(), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context)), static_cast<WebCore::DragApplicationFlags>(flags));
</ins><span class="cx"> SandboxExtension::Handle handle;
</span><span class="cx"> SandboxExtension::HandleArray sandboxExtensionForUpload;
</span><span class="cx"> m_page.performDragOperation(dragData, String(), handle, sandboxExtensionForUpload);
</span></span></pre>
</div>
</div>
</body>
</html>