summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2023-01-10 09:44:27 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-13 08:07:43 +0000
commit5220252dbecb70091766c86ccebe5127c6b8cbd2 (patch)
tree8aa43b3dafd5df8a031c35be4c03832ece38c477 /src
parent25127f813398925abe030ac36a008bf37653a70d (diff)
Avoid scaling mouse movement properties on High DPI screens
ui::TranslateAndScaleWebInputEvent() scales movementX/Y if the input event is not raw. It is not exactly clear what is the expected behavior and browsers handle movementX/Y scaling differently. W3C states that currentEvent.movementX = currentEvent.screenX - previousEvent.screenX which is not true with scaling. This is a workaround for https://crbug.com/907309 This fixes tst_QWebEnginePage::mouseMovementProperties auto test with QT_SCALE_FACTOR=2. Change-Id: I6d1fd591ec2bbeb22c448772c367b59509244491 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit c69b00df8513237dc5a14f399eeb9b6d624d84f3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/core/render_widget_host_view_qt_delegate_client.cpp1
-rw-r--r--src/core/web_event_factory.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/core/render_widget_host_view_qt_delegate_client.cpp b/src/core/render_widget_host_view_qt_delegate_client.cpp
index 7078b82f8..1b30e9953 100644
--- a/src/core/render_widget_host_view_qt_delegate_client.cpp
+++ b/src/core/render_widget_host_view_qt_delegate_client.cpp
@@ -410,6 +410,7 @@ void RenderWidgetHostViewQtDelegateClient::handlePointerEvent(T *event)
webEvent.movement_x = event->globalPosition().x() - m_previousMousePosition.x();
webEvent.movement_y = event->globalPosition().y() - m_previousMousePosition.y();
+ webEvent.is_raw_movement_event = true;
if (m_rwhv->IsMouseLocked())
QCursor::setPos(m_previousMousePosition);
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 007492843..508a4b557 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -1444,6 +1444,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev)
webKitEvent.SetPositionInWidget(ev->position().x(), ev->position().y());
webKitEvent.movement_x = ev->position().x() - ev->oldPos().x();
webKitEvent.movement_y = ev->position().y() - ev->oldPos().y();
+ webKitEvent.is_raw_movement_event = true;
webKitEvent.pointer_type = WebPointerProperties::PointerType::kMouse;
return webKitEvent;