diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-01-17 18:06:50 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-01-26 11:04:57 +0000 |
commit | 35c38346e65fe26c75bbe08c7002f645ea53fec1 (patch) | |
tree | 3843a3e63fd39495da11ade1ab3844fff23bb149 /src/core/web_contents_adapter.cpp | |
parent | c7031c8aa61b304a7532489f521a62e08a37eadf (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.cpp | 28 |
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); |