From 7198f0e33c6c847739fd30f436a40ca21e67db25 Mon Sep 17 00:00:00 2001 From: SeeLook <seelook@gmail.com> Date: Tue, 29 Dec 2020 09:20:15 +0100 Subject: [PATCH] Added pinch zoom to main score --- src/qml/MainScore.qml | 47 ++++++++++++++++++++++------------ src/qml/level/LevelPreview.qml | 7 +++-- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/qml/MainScore.qml b/src/qml/MainScore.qml index 216160555..3dec45666 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 66df30193..4ff5d89a0 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 } } } -- GitLab