summaryrefslogtreecommitdiffstats
path: root/src/core/web_event_factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/web_event_factory.cpp')
-rw-r--r--src/core/web_event_factory.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 505a684eb..80850af70 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -492,6 +492,19 @@ static WebMouseEvent::Button mouseButtonForEvent(QMouseEvent *event)
return WebMouseEvent::ButtonRight;
else if (event->button() == Qt::MidButton)
return WebMouseEvent::ButtonMiddle;
+
+ if (event->type() != QEvent::MouseMove)
+ return WebMouseEvent::ButtonNone;
+
+ // This is technically wrong, mouse move should always have ButtonNone,
+ // but it is consistent with aura and selection code depends on it:
+ if (event->buttons() & Qt::LeftButton)
+ return WebMouseEvent::ButtonLeft;
+ else if (event->buttons() & Qt::RightButton)
+ return WebMouseEvent::ButtonRight;
+ else if (event->buttons() & Qt::MidButton)
+ return WebMouseEvent::ButtonMiddle;
+
return WebMouseEvent::ButtonNone;
}
@@ -659,14 +672,11 @@ blink::WebMouseWheelEvent WebEventFactory::toWebWheelEvent(QWheelEvent *ev, doub
webEvent.modifiers = modifiersForEvent(ev);
webEvent.timeStampSeconds = currentTimeForEvent(ev);
- if (ev->orientation() == Qt::Horizontal)
- webEvent.wheelTicksX = ev->delta() / 120.0f;
- else
- webEvent.wheelTicksY = ev->delta() / 120.0f;
-
+ webEvent.wheelTicksX = static_cast<float>(ev->angleDelta().x()) / QWheelEvent::DefaultDeltasPerStep;
+ webEvent.wheelTicksY = static_cast<float>(ev->angleDelta().y()) / QWheelEvent::DefaultDeltasPerStep;
- // Since we report the scroll by the pixel, convert the delta to pixel distance using standard scroll step.
- // Use the same single scroll step as QTextEdit (in QTextEditPrivate::init [h,v]bar->setSingleStep)
+ // We can't use the device specific QWheelEvent::pixelDelta(), so we calculate
+ // a pixel delta based on ticks and scroll per line.
static const float cDefaultQtScrollStep = 20.f;
webEvent.deltaX = webEvent.wheelTicksX * wheelScrollLines * cDefaultQtScrollStep;