From 5d932cc5d61a17b63faa33287a3dd2869aceece1 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 11 Sep 2022 12:08:35 +0200 Subject: [PATCH] Fix zigbee topology map pinch area --- .../zigbee/ZigbeeNetworkTopologyPage.qml | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/nymea-app/ui/system/zigbee/ZigbeeNetworkTopologyPage.qml b/nymea-app/ui/system/zigbee/ZigbeeNetworkTopologyPage.qml index 8e677d4b..af0a39f3 100644 --- a/nymea-app/ui/system/zigbee/ZigbeeNetworkTopologyPage.qml +++ b/nymea-app/ui/system/zigbee/ZigbeeNetworkTopologyPage.qml @@ -436,55 +436,57 @@ Page { } - MouseArea { - anchors.fill: parent - - onClicked: { - print("clicked:", mouseX, mouseY) - var translatedMouseX = (mouseX - canvas.width / 2) - var translatedMouseY = (mouseY - canvas.height / 2) - d.selectedNodeAddress = -1 - for (var networkAddress in d.nodeItems) { - var nodeItem = d.nodeItems[networkAddress] -// print("nodeItem at:", root.scale * nodeItem.x, root.scale * nodeItem.y) - if (Math.abs(nodeItem.x * root.scale - translatedMouseX) < (root.scale * root.nodeSize / 2) - && Math.abs(nodeItem.y * root.scale - translatedMouseY) < (root.scale * root.nodeSize / 2)) { - d.selectedNodeAddress = nodeItem.node.networkAddress; - print("selecting", nodeItem.node.networkAddress) - for (var j = 0; j < nodeItem.node.routes.length; j++) { - var route = nodeItem.node.routes[j] - print("route:", route.destinationAddress, "via", route.nextHopAddress) - } - } - } - - canvas.requestPaint(); - } - - onWheel: { - if (wheel.modifiers & Qt.ControlModifier) { - root.scale = Math.min(root.maxScale, Math.max(root.minScale, root.scale + 1.0 * wheel.angleDelta.y / 1000)) - root.reload() - } else { - wheel.accepted = false - } - } - } - PinchArea { anchors.fill: parent - property double scaleOffset: 0 + property double startScale: 0 onPinchStarted: { - scaleOffset = 1 - root.scale - print("pinch started", offset) + startScale = root.scale + print("pinch started", startScale) } onPinchUpdated: { print("pinch updated:", pinch.scale) - root.scale = Math.min(root.maxScale, Math.max(root.minScale, pinch.scale + scaleOffset)) + var scaleDiff = pinch.scale - 1 + root.scale = Math.min(root.maxScale, Math.max(root.minScale, startScale + scaleDiff)) root.reload() } + + MouseArea { + anchors.fill: parent + + onClicked: { + print("clicked:", mouseX, mouseY) + var translatedMouseX = (mouseX - canvas.width / 2) + var translatedMouseY = (mouseY - canvas.height / 2) + d.selectedNodeAddress = -1 + for (var networkAddress in d.nodeItems) { + var nodeItem = d.nodeItems[networkAddress] + // print("nodeItem at:", root.scale * nodeItem.x, root.scale * nodeItem.y) + if (Math.abs(nodeItem.x * root.scale - translatedMouseX) < (root.scale * root.nodeSize / 2) + && Math.abs(nodeItem.y * root.scale - translatedMouseY) < (root.scale * root.nodeSize / 2)) { + d.selectedNodeAddress = nodeItem.node.networkAddress; + print("selecting", nodeItem.node.networkAddress) + for (var j = 0; j < nodeItem.node.routes.length; j++) { + var route = nodeItem.node.routes[j] + print("route:", route.destinationAddress, "via", route.nextHopAddress) + } + } + } + + canvas.requestPaint(); + } + + onWheel: { + if (wheel.modifiers & Qt.ControlModifier) { + root.scale = Math.min(root.maxScale, Math.max(root.minScale, root.scale + 1.0 * wheel.angleDelta.y / 1000)) + root.reload() + } else { + wheel.accepted = false + } + } + } } + } }