From 3944eeec258db1eb740027f833db246b9a0d0d4d Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB>
Date: Wed, 21 Jun 2017 13:56:00 +0200
Subject: [PATCH] CursorLocationMapTool is sensitive to used mouse button. By
 default LeftMouseButton only.

---
 timeseriesviewer/maptools.py | 56 ++++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 25 deletions(-)

diff --git a/timeseriesviewer/maptools.py b/timeseriesviewer/maptools.py
index 9bfead0c..606d215b 100644
--- a/timeseriesviewer/maptools.py
+++ b/timeseriesviewer/maptools.py
@@ -26,7 +26,7 @@ class CursorLocationMapTool(QgsMapToolEmitPoint):
         self.rubberband = QgsRubberBand(self.canvas, QGis.Polygon)
 
         color = QColor('red')
-
+        self.mButtons = [Qt.LeftButton]
         self.rubberband.setLineStyle(Qt.SolidLine)
         self.rubberband.setColor(color)
         self.rubberband.setWidth(2)
@@ -38,9 +38,15 @@ class CursorLocationMapTool(QgsMapToolEmitPoint):
         self.marker.setIconSize(5)
         self.marker.setIconType(QgsVertexMarker.ICON_CROSS)  # or ICON_CROSS, ICON_X
 
+    def setMouseButtons(self, listOfButtons):
+        assert isinstance(listOfButtons)
+        self.mButtons = listOfButtons
+
     def canvasPressEvent(self, e):
-        geoPoint = self.toMapCoordinates(e.pos())
-        self.marker.setCenter(geoPoint)
+        assert isinstance(e, QgsMapMouseEvent)
+        if e.button() in self.mButtons:
+            geoPoint = self.toMapCoordinates(e.pos())
+            self.marker.setCenter(geoPoint)
         #self.marker.show()
 
     def setStyle(self, color=None, brushStyle=None, fillColor=None, lineStyle=None):
@@ -53,28 +59,28 @@ class CursorLocationMapTool(QgsMapToolEmitPoint):
         if lineStyle:
             self.rubberband.setLineStyle(lineStyle)
     def canvasReleaseEvent(self, e):
-
-
-        pixelPoint = e.pixelPoint()
-
-        crs = self.canvas.mapSettings().destinationCrs()
-        self.marker.hide()
-        geoPoint = self.toMapCoordinates(pixelPoint)
-        if self.mShowCrosshair:
-            #show a temporary crosshair
-            ext = SpatialExtent.fromMapCanvas(self.canvas)
-            cen = geoPoint
-            geom = QgsGeometry()
-            geom.addPart([QgsPoint(ext.upperLeftPt().x(),cen.y()), QgsPoint(ext.lowerRightPt().x(), cen.y())],
-                          QGis.Line)
-            geom.addPart([QgsPoint(cen.x(), ext.upperLeftPt().y()), QgsPoint(cen.x(), ext.lowerRightPt().y())],
-                          QGis.Line)
-            self.rubberband.addGeometry(geom, None)
-            self.rubberband.show()
-            #remove crosshair after 0.25 sec
-            QTimer.singleShot(250, self.hideRubberband)
-
-        self.sigLocationRequest.emit(SpatialPoint(crs, geoPoint))
+        if e.button() in self.mButtons:
+
+            pixelPoint = e.pixelPoint()
+
+            crs = self.canvas.mapSettings().destinationCrs()
+            self.marker.hide()
+            geoPoint = self.toMapCoordinates(pixelPoint)
+            if self.mShowCrosshair:
+                #show a temporary crosshair
+                ext = SpatialExtent.fromMapCanvas(self.canvas)
+                cen = geoPoint
+                geom = QgsGeometry()
+                geom.addPart([QgsPoint(ext.upperLeftPt().x(),cen.y()), QgsPoint(ext.lowerRightPt().x(), cen.y())],
+                              QGis.Line)
+                geom.addPart([QgsPoint(cen.x(), ext.upperLeftPt().y()), QgsPoint(cen.x(), ext.lowerRightPt().y())],
+                              QGis.Line)
+                self.rubberband.addGeometry(geom, None)
+                self.rubberband.show()
+                #remove crosshair after 0.25 sec
+                QTimer.singleShot(250, self.hideRubberband)
+
+            self.sigLocationRequest.emit(SpatialPoint(crs, geoPoint))
 
     def hideRubberband(self):
         self.rubberband.reset()
-- 
GitLab