From fe69b304b2496233142d9018ab5c6a7675ea089c Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Sun, 26 Nov 2017 00:10:08 +0200 Subject: map-widget: interrupt map animations on new interactions When the map is performing zoom/pan animation and the user performs an action that would trigger a new zoom/pan animation, but some glitches can occurs. An example would be when one clicks a dive in the dive list - the zoom/pan animation will trigger, so that the map is centered on the dive site, but if the user clicks the [+] button to zoom-in, while the animation is running the map will glitch. This patch prevents such glitches by stopping all running animations in progress when the user: - single clicks the map - uses the mouse-wheel to zoom - presses the [+] / [-] buttons Signed-off-by: Lubomir I. Ivanov --- map-widget/qml/MapWidget.qml | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'map-widget/qml') diff --git a/map-widget/qml/MapWidget.qml b/map-widget/qml/MapWidget.qml index 646d2f993..2a75d4080 100644 --- a/map-widget/qml/MapWidget.qml +++ b/map-widget/qml/MapWidget.qml @@ -128,6 +128,8 @@ Item { MouseArea { anchors.fill: parent + onPressed: { map.stopZoomAnimations(); mouse.accepted = false } + onWheel: { map.stopZoomAnimations(); wheel.accepted = false } onDoubleClicked: map.doubleClickHandler(map.toCoordinate(Qt.point(mouseX, mouseY))) } @@ -294,6 +296,7 @@ Item { MouseArea { anchors.fill: parent onClicked: { + map.stopZoomAnimations() map.newCenter = map.center map.newZoom = map.zoomLevel + map.zoomStep if (map.newZoom > map.maximumZoomLevel) @@ -318,6 +321,7 @@ Item { MouseArea { anchors.fill: parent onClicked: { + map.stopZoomAnimations() map.newCenter = map.center map.newZoom = map.zoomLevel - map.zoomStep mapAnimationClick.restart() -- cgit v1.2.3-70-g09d2