forked from qt-creator/qt-creator
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:
committed by
Thomas Hartmann
parent
0192cef3bb
commit
b3359f28a6
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user