diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2019-01-03 10:15:50 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2019-01-04 12:54:14 +0000 |
commit | 123f97da6e6bb718682ba046a9ee82a24403cd86 (patch) | |
tree | 0f87abf9c6e0acdc758ae731a7e7a456963d6a6c | |
parent | 005ba7997fd4573e65e8c78ad8456ce7a29298a2 (diff) |
Unify input event timestamps among platforms
Chromium's expected timestamp base is the time when the system was
started. QInputEvent::timestamp() returns a timestamp for the actual
platform that may differ from the Chromium's standard.
Use base::TimeTicks::Now() at the input conversion instead. This may
provide less precise but valid timestamp for all cases.
Fixes: QTBUG-72654
Change-Id: I2235344a629072c15f7b16c033e13260093de958
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
-rw-r--r-- | src/core/web_event_factory.cpp | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp index 8a72422d4..fc6287dd9 100644 --- a/src/core/web_event_factory.cpp +++ b/src/core/web_event_factory.cpp @@ -1206,19 +1206,6 @@ static ui::DomKey domKeyForQtKey(int qtKey) } } -static inline base::TimeTicks currentTimeForEvent(const QEvent *event) -{ - Q_ASSERT(event); - - if (event->type() != QEvent::Leave) { - const QInputEvent *inputEvent = static_cast<const QInputEvent *>(event); - if (inputEvent->timestamp()) - return base::TimeTicks::FromInternalValue(inputEvent->timestamp() * 1000); - } - - return base::TimeTicks::Now(); -} - template<class T> static WebMouseEvent::Button mouseButtonForEvent(T *event) { @@ -1375,7 +1362,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev, double dpiScale) mouseButtonForEvent<QMouseEvent>(ev), 0, modifiersForEvent(ev), - currentTimeForEvent(ev)); + base::TimeTicks::Now()); webKitEvent.pointer_type = WebPointerProperties::PointerType::kMouse; @@ -1385,7 +1372,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev, double dpiScale) WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev, double dpiScale) { WebMouseEvent webKitEvent; - webKitEvent.SetTimeStamp(currentTimeForEvent(ev)); + webKitEvent.SetTimeStamp(base::TimeTicks::Now()); webKitEvent.SetModifiers(modifiersForEvent(ev)); webKitEvent.SetType(webEventTypeForEvent(ev)); @@ -1406,7 +1393,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QTabletEvent *ev, double dpiScale mouseButtonForEvent<QTabletEvent>(ev), 0, modifiersForEvent(ev), - currentTimeForEvent(ev)); + base::TimeTicks::Now()); webKitEvent.force = ev->pressure(); webKitEvent.tilt_x = ev->xTilt(); @@ -1423,7 +1410,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QEvent *ev) Q_ASSERT(ev->type() == QEvent::Leave || ev->type() == QEvent::HoverLeave); WebMouseEvent webKitEvent; - webKitEvent.SetTimeStamp(currentTimeForEvent(ev)); + webKitEvent.SetTimeStamp(base::TimeTicks::Now()); webKitEvent.SetType(WebInputEvent::kMouseLeave); return webKitEvent; } @@ -1432,7 +1419,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QEvent *ev) WebGestureEvent WebEventFactory::toWebGestureEvent(QNativeGestureEvent *ev, double dpiScale) { WebGestureEvent webKitEvent; - webKitEvent.SetTimeStamp(currentTimeForEvent(ev)); + webKitEvent.SetTimeStamp(base::TimeTicks::Now()); webKitEvent.SetModifiers(modifiersForEvent(ev)); webKitEvent.SetPositionInWidget(WebFloatPoint(ev->localPos().x() / dpiScale, @@ -1502,7 +1489,7 @@ blink::WebMouseWheelEvent WebEventFactory::toWebWheelEvent(QWheelEvent *ev, doub WebMouseWheelEvent webEvent; webEvent.SetType(webEventTypeForEvent(ev)); webEvent.SetModifiers(modifiersForEvent(ev)); - webEvent.SetTimeStamp(currentTimeForEvent(ev)); + webEvent.SetTimeStamp(base::TimeTicks::Now()); webEvent.SetPositionInWidget(ev->x() / dpiScale, ev->y() / dpiScale); webEvent.SetPositionInScreen(ev->globalX(), ev->globalY()); @@ -1532,7 +1519,7 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent, return false; #endif - webEvent.SetTimeStamp(currentTimeForEvent(ev)); + webEvent.SetTimeStamp(base::TimeTicks::Now()); webEvent.SetPositionInWidget(ev->x() / dpiScale, ev->y() / dpiScale); webEvent.SetPositionInScreen(ev->globalX(), ev->globalY()); @@ -1546,7 +1533,7 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent, content::NativeWebKeyboardEvent WebEventFactory::toWebKeyboardEvent(QKeyEvent *ev) { content::NativeWebKeyboardEvent webKitEvent(reinterpret_cast<gfx::NativeEvent>(ev)); - webKitEvent.SetTimeStamp(currentTimeForEvent(ev)); + webKitEvent.SetTimeStamp(base::TimeTicks::Now()); webKitEvent.SetModifiers(modifiersForEvent(ev)); webKitEvent.SetType(webEventTypeForEvent(ev)); |