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,41 +82,52 @@ bool Navigation2dFilter::gestureEvent(QGestureEvent *event)
|
|||||||
|
|
||||||
bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
|
bool Navigation2dFilter::wheelEvent(QWheelEvent *event)
|
||||||
{
|
{
|
||||||
if (event->source() == Qt::MouseEventSynthesizedBySystem) {
|
if (!event->modifiers().testFlag(Qt::ControlModifier)) {
|
||||||
if (event->modifiers().testFlag(Qt::ControlModifier)) {
|
if (event->source() == Qt::MouseEventSynthesizedBySystem) {
|
||||||
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()));
|
emit panChanged(QPointF(event->pixelDelta()));
|
||||||
event->accept();
|
event->accept();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else if (event->source() == Qt::MouseEventNotSynthesized) {
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
auto zoomInSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomIn);
|
auto zoomChangedSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomChanged);
|
||||||
bool zoomInConnected = QObject::isSignalConnected(zoomInSignal);
|
bool zoomChangedConnected = QObject::isSignalConnected(zoomChangedSignal);
|
||||||
|
|
||||||
auto zoomOutSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomOut);
|
if (zoomChangedConnected) {
|
||||||
bool zoomOutConnected = QObject::isSignalConnected(zoomOutSignal);
|
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 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;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (zoomInConnected && zoomOutConnected) {
|
auto zoomInSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomIn);
|
||||||
if (event->modifiers().testFlag(Qt::ControlModifier)) {
|
bool zoomInConnected = QObject::isSignalConnected(zoomInSignal);
|
||||||
if (QPointF angle = event->angleDelta(); !angle.isNull()) {
|
|
||||||
double delta = std::abs(angle.x()) > std::abs(angle.y()) ? angle.x() : angle.y();
|
auto zoomOutSignal = QMetaMethod::fromSignal(&Navigation2dFilter::zoomOut);
|
||||||
if (delta > 0)
|
bool zoomOutConnected = QObject::isSignalConnected(zoomOutSignal);
|
||||||
emit zoomIn();
|
|
||||||
else
|
if (zoomInConnected && zoomOutConnected) {
|
||||||
emit zoomOut();
|
if (QPointF angle = event->angleDelta(); !angle.isNull()) {
|
||||||
event->accept();
|
double delta = std::abs(angle.x()) > std::abs(angle.y()) ? angle.x() : angle.y();
|
||||||
return true;
|
if (delta > 0)
|
||||||
}
|
emit zoomIn();
|
||||||
}
|
else
|
||||||
|
emit zoomOut();
|
||||||
|
event->accept();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user