summaryrefslogtreecommitdiffstats
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
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>
-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);