summaryrefslogtreecommitdiffstats
path: root/src/core/web_event_factory.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-31 14:37:56 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-09-22 08:47:28 +0000
commit75fcb640fae72446b26d7978a5df3c058e0ab67f (patch)
tree3467a5d3eb1f31337b81ab8976a07cac0e694541 /src/core/web_event_factory.cpp
parent06e3d201299ab803f4dc41f35201830c74242d19 (diff)
Adapt to forced scroll-wheel latching
Handle that Chromium now requires all wheel events to be phases despite them not being phased on the majority of platforms. Change-Id: Iabd5630652c0d8fd67563db3d63ef1f2f528c35c Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/core/web_event_factory.cpp')
-rw-r--r--src/core/web_event_factory.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index b97235ceb..479fc38f8 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -1422,13 +1422,14 @@ static void setBlinkWheelEventDelta(blink::WebMouseWheelEvent &webEvent)
webEvent.delta_y = webEvent.wheel_ticks_y * wheelScrollLines * cDefaultQtScrollStep;
}
-blink::WebMouseWheelEvent::Phase toBlinkPhase(Qt::ScrollPhase phase)
+blink::WebMouseWheelEvent::Phase toBlinkPhase(QWheelEvent *ev)
{
- switch (phase) {
+ switch (ev->phase()) {
case Qt::NoScrollPhase:
+ case Qt::ScrollMomentum:
return blink::WebMouseWheelEvent::kPhaseNone;
case Qt::ScrollBegin:
- return blink::WebMouseWheelEvent::kPhaseBegan;
+ return ev->angleDelta().isNull() ? blink::WebMouseWheelEvent::kPhaseMayBegin : blink::WebMouseWheelEvent::kPhaseBegan;
case Qt::ScrollUpdate:
return blink::WebMouseWheelEvent::kPhaseChanged;
case Qt::ScrollEnd:
@@ -1449,7 +1450,7 @@ blink::WebMouseWheelEvent WebEventFactory::toWebWheelEvent(QWheelEvent *ev, doub
webEvent.wheel_ticks_x = static_cast<float>(ev->angleDelta().x()) / QWheelEvent::DefaultDeltasPerStep;
webEvent.wheel_ticks_y = static_cast<float>(ev->angleDelta().y()) / QWheelEvent::DefaultDeltasPerStep;
- webEvent.phase = toBlinkPhase(ev->phase());
+ webEvent.phase = toBlinkPhase(ev);
webEvent.has_precise_scrolling_deltas = true;
setBlinkWheelEventDelta(webEvent);
@@ -1462,7 +1463,7 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent,
return false;
if (modifiersForEvent(ev) != webEvent.GetModifiers())
return false;
- if (toBlinkPhase(ev->phase()) != webEvent.phase)
+ if (toBlinkPhase(ev) != webEvent.phase)
return false;
webEvent.SetTimeStamp(currentTimeForEvent(ev));