diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml index 216160555f47c8769c6896627497dfe9d95d8e67..3dec45666652f96eaf44bd0d277f54a538feb654 100644 --- a/src/qml/MainScore.qml +++ b/src/qml/MainScore.qml @@ -56,24 +56,37 @@ Score { } Timer { id: zoomTimer; interval: 500 } - MouseArea { + PinchArea { anchors.fill: parent - z: -1 - onWheel: { - if (wheel.modifiers & Qt.ControlModifier) { - if (wheel.angleDelta.y > 0) { - if (!zoomTimer.running) { - zoomInAct.trigger() - zoomTimer.running = true - } - } else if (wheel.angleDelta.y < 0) { - if (!zoomTimer.running) { - zoomOutAct.trigger() - zoomTimer.running = true - } - } - } else - wheel.accepted = false + pinch.dragAxis: Pinch.XandYAxis + onPinchFinished: { + if (pinch.scale > 1.2) + zoom(true) + else if (pinch.scale < 0.8) + zoom(false) + } + // HACK: keeping MouseArea inside PinchArea makes it working + MouseArea { + anchors.fill: parent + z: -1 + onWheel: { + if (wheel.modifiers & Qt.ControlModifier) { + if (wheel.angleDelta.y > 0) + zoom(true) + else if (wheel.angleDelta.y < 0) + zoom(false) + } else + wheel.accepted = false + } + } + } + function zoom(zoomIn) { + if (!zoomTimer.running) { + if (zoomIn) + zoomInAct.trigger() + else + zoomOutAct.trigger() + zoomTimer.running = true } } diff --git a/src/qml/level/LevelPreview.qml b/src/qml/level/LevelPreview.qml index 66df301937313fd59d2d81fc1a5d59f67fb3f2f8..4ff5d89a01637931c8953f6cb87e750a83ba3a84 100644 --- a/src/qml/level/LevelPreview.qml +++ b/src/qml/level/LevelPreview.qml @@ -21,7 +21,6 @@ TlevelPreviewItem { text: instrumentGlyph } PinchArea { - id: pinchArea anchors.fill: parent pinch.target: levCol pinch.minimumScale: 0.5 @@ -34,10 +33,10 @@ TlevelPreviewItem { if (wheel.modifiers & Qt.ControlModifier) { if (wheel.angleDelta.y > 0) zoom(true) - else if (wheel.angleDelta.y < 0) - zoom(false) + else if (wheel.angleDelta.y < 0) + zoom(false) } else - wheel.accepted = false + wheel.accepted = false } } }