summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_adapter.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2017-01-17 18:06:50 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-01-26 11:04:57 +0000
commit35c38346e65fe26c75bbe08c7002f645ea53fec1 (patch)
tree3843a3e63fd39495da11ade1ab3844fff23bb149 /src/core/web_contents_adapter.cpp
parentc7031c8aa61b304a7532489f521a62e08a37eadf (diff)
Forward mouse buttons and keyboard modifiers while dragging
Until now we always pretended that the left mouse button was used and no modifier key was pressed. Change-Id: I0f4b84ed87e7c94289c14c13a6cd12c3beda671a Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-rw-r--r--src/core/web_contents_adapter.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 187169b2b..373dc7a5a 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -1198,6 +1198,32 @@ Qt::DropAction toQt(blink::WebDragOperation op)
return Qt::IgnoreAction;
}
+static int toWeb(Qt::MouseButtons buttons)
+{
+ int result = 0;
+ if (buttons & Qt::LeftButton)
+ result |= blink::WebInputEvent::LeftButtonDown;
+ if (buttons & Qt::RightButton)
+ result |= blink::WebInputEvent::RightButtonDown;
+ if (buttons & Qt::MiddleButton)
+ result |= blink::WebInputEvent::MiddleButtonDown;
+ return result;
+}
+
+static int toWeb(Qt::KeyboardModifiers modifiers)
+{
+ int result = 0;
+ if (modifiers & Qt::ShiftModifier)
+ result |= blink::WebInputEvent::ShiftKey;
+ if (modifiers & Qt::ControlModifier)
+ result |= blink::WebInputEvent::ControlKey;
+ if (modifiers & Qt::AltModifier)
+ result |= blink::WebInputEvent::AltKey;
+ if (modifiers & Qt::MetaModifier)
+ result |= blink::WebInputEvent::MetaKey;
+ return result;
+}
+
Qt::DropAction WebContentsAdapter::updateDragPosition(QDragMoveEvent *e, const QPoint &screenPos)
{
Q_D(WebContentsAdapter);
@@ -1205,7 +1231,7 @@ Qt::DropAction WebContentsAdapter::updateDragPosition(QDragMoveEvent *e, const Q
d->lastDragClientPos = toGfx(e->pos());
d->lastDragScreenPos = toGfx(screenPos);
rvh->DragTargetDragOver(d->lastDragClientPos, d->lastDragScreenPos, toWeb(e->possibleActions()),
- blink::WebInputEvent::LeftButtonDown);
+ toWeb(e->mouseButtons()) | toWeb(e->keyboardModifiers()));
base::MessageLoop *currentMessageLoop = base::MessageLoop::current();
DCHECK(currentMessageLoop);