Use Mouse wheel and ctrl to zoom the curve editor

Change-Id: I85001a2173e69887f72c2e0b366861e0753dd8a3
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Knud Dollereder
2022-08-22 15:21:10 +02:00
committed by Thomas Hartmann
parent 0192cef3bb
commit b3359f28a6

View File

@@ -82,20 +82,33 @@ bool Navigation2dFilter::gestureEvent(QGestureEvent *event)
bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
{
if (!event->modifiers().testFlag(Qt::ControlModifier)) {
if (event->source() == Qt::MouseEventSynthesizedBySystem) {
if (event->modifiers().testFlag(Qt::ControlModifier)) {
emit panChanged(QPointF(event->pixelDelta()));
event->accept();
return true;
}
return false;
}
auto zoomChangedSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomChanged);
bool zoomChangedConnected = QObject::isSignalConnected(zoomChangedSignal);
if (zoomChangedConnected) {
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());
event->accept();
return true;
}
} else {
emit panChanged(QPointF(event->pixelDelta()));
} else if (QPointF delta = event->angleDelta(); !delta.isNull()) {
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());
event->accept();
return true;
}
} else if (event->source() == Qt::MouseEventNotSynthesized) {
return false;
}
auto zoomInSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomIn);
bool zoomInConnected = QObject::isSignalConnected(zoomInSignal);
@@ -104,7 +117,6 @@ bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
bool zoomOutConnected = QObject::isSignalConnected(zoomOutSignal);
if (zoomInConnected && zoomOutConnected) {
if (event->modifiers().testFlag(Qt::ControlModifier)) {
if (QPointF angle = event->angleDelta(); !angle.isNull()) {
double delta = std::abs(angle.x()) > std::abs(angle.y()) ? angle.x() : angle.y();
if (delta > 0)
@@ -115,8 +127,7 @@ bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
return true;
}
}
}
}
return false;
}