summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-03-27 17:42:27 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-28 14:41:47 +0100
commitf9da390c204cb7e7426e181aa27736d1ed22fd08 (patch)
treee3c63ce6b7828764286359db7c4e4240814f7d99
parent1967978f5d0b225aec561a0e1028b9e02f5cdce4 (diff)
downloadqtwebkit-f9da390c204cb7e7426e181aa27736d1ed22fd08.tar.gz
Set image drag hotspot from drag image origin.
QtWebKit does not currently set the drag image origin, this cause any dragged image to always visibly jump as soon as the drag start. By setting the hotspot any dragged image will start at its origin and only move when then the mouse moves. Change-Id: I6cdfa1bdbcf79a63f26fc62442978f65aabd493b Reviewed-by: Michael Bruning <michael.bruning@digia.com>
-rw-r--r--Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp
index 6cc5b315c..479c79cd2 100644
--- a/Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp
+++ b/Source/WebKit/qt/WebCoreSupport/DragClientQt.cpp
@@ -90,7 +90,7 @@ void DragClientQt::willPerformDragSourceAction(DragSourceAction, const IntPoint&
{
}
-void DragClientQt::startDrag(DragImageRef dragImage, const IntPoint&, const IntPoint&, Clipboard* clipboard, Frame* frame, bool)
+void DragClientQt::startDrag(DragImageRef dragImage, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool)
{
#ifndef QT_NO_DRAGANDDROP
QMimeData* clipboardData = clipboard->pasteboard().clipboardData();
@@ -98,9 +98,10 @@ void DragClientQt::startDrag(DragImageRef dragImage, const IntPoint&, const IntP
QObject* view = m_chromeClient->platformPageClient()->ownerWidget();
if (view) {
QDrag* drag = new QDrag(view);
- if (dragImage)
+ if (dragImage) {
drag->setPixmap(*dragImage);
- else if (clipboardData && clipboardData->hasImage())
+ drag->setHotSpot(IntPoint(eventPos - dragImageOrigin));
+ } else if (clipboardData && clipboardData->hasImage())
drag->setPixmap(qvariant_cast<QPixmap>(clipboardData->imageData()));
DragOperation dragOperationMask = clipboard->sourceOperation();
drag->setMimeData(clipboardData);