aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/componentcore/navigation2d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore/navigation2d.cpp')
-rw-r--r--src/plugins/qmldesigner/components/componentcore/navigation2d.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/navigation2d.cpp b/src/plugins/qmldesigner/components/componentcore/navigation2d.cpp
index 6250b6a25f..487f84229c 100644
--- a/src/plugins/qmldesigner/components/componentcore/navigation2d.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/navigation2d.cpp
@@ -1,6 +1,9 @@
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "navigation2d.h"
+#include <utils/hostosinfo.h>
+#include <designersettings.h>
+#include <qmldesignerplugin.h>
#include <QGestureEvent>
#include <QScrollBar>
@@ -73,15 +76,24 @@ bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
bool zoomChangedConnected = QObject::isSignalConnected(zoomChangedSignal);
if (zoomChangedConnected) {
+ const double globalMouseSpeed =
+ QmlDesignerPlugin::settings().value(DesignerSettingsKey::EDITOR_ZOOM_FACTOR).toDouble();
+
+ double speed = globalMouseSpeed/20.;
+ if (Utils::HostOsInfo::isMacHost())
+ speed = 1.0/200.;
+
if (QPointF delta = event->pixelDelta(); !delta.isNull()) {
double dist = std::abs(delta.x()) > std::abs(delta.y()) ? -delta.x() : delta.y();
- emit zoomChanged(dist/200.0, event->position());
+ emit zoomChanged(dist * speed, event->position());
event->accept();
return true;
} else if (QPointF delta = event->angleDelta(); !delta.isNull()) {
+ constexpr double degreePerStep = 15.;
+ constexpr double stepCount = 8.;
double dist = std::abs(delta.x()) > std::abs(delta.y()) ? -delta.x() : delta.y();
- dist = dist / (8*15);
- emit zoomChanged(dist/200.0, event->position());
+ dist = dist / (stepCount*degreePerStep);
+ emit zoomChanged(dist * speed, event->position());
event->accept();
return true;
}