Releasing right mouse button cancels sticky pan, even after a mouse drag
This commit is contained in:
parent
f05c5766d9
commit
12004846e1
@ -487,13 +487,13 @@ class CameraStickyPanMouseAction(ViewAction):
|
|||||||
hidden = True
|
hidden = True
|
||||||
settingsKey = None
|
settingsKey = None
|
||||||
|
|
||||||
_sticking = False
|
sticking = False
|
||||||
mouseDragStart = None
|
mouseDragStart = None
|
||||||
|
|
||||||
def toggleSticky(self, event):
|
def toggleSticky(self, event):
|
||||||
view = event.view
|
view = event.view
|
||||||
if not self._sticking:
|
if not self.sticking:
|
||||||
self._sticking = True
|
self.sticking = True
|
||||||
cursor = view.cursor()
|
cursor = view.cursor()
|
||||||
self._oldPos = cursor.pos()
|
self._oldPos = cursor.pos()
|
||||||
self._oldShape = cursor.shape()
|
self._oldShape = cursor.shape()
|
||||||
@ -505,7 +505,7 @@ class CameraStickyPanMouseAction(ViewAction):
|
|||||||
self.mouseDragStart = event.x(), event.y()
|
self.mouseDragStart = event.x(), event.y()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self._sticking = False
|
self.sticking = False
|
||||||
cursor = view.cursor()
|
cursor = view.cursor()
|
||||||
cursor.setPos(self._oldPos)
|
cursor.setPos(self._oldPos)
|
||||||
cursor.setShape(self._oldShape)
|
cursor.setShape(self._oldShape)
|
||||||
@ -520,7 +520,7 @@ class CameraStickyPanMouseAction(ViewAction):
|
|||||||
_last_dx = _last_dy = 0
|
_last_dx = _last_dy = 0
|
||||||
|
|
||||||
def mouseMoveEvent(self, event):
|
def mouseMoveEvent(self, event):
|
||||||
if not self._sticking:
|
if not self.sticking:
|
||||||
return
|
return
|
||||||
|
|
||||||
x = event.x()
|
x = event.x()
|
||||||
@ -552,7 +552,7 @@ class CameraStickyPanMouseAction(ViewAction):
|
|||||||
# Disable camera movement while the cursor is repositioned
|
# Disable camera movement while the cursor is repositioned
|
||||||
# since QCursor.setPos emits a mouseMoved event
|
# since QCursor.setPos emits a mouseMoved event
|
||||||
|
|
||||||
self._sticking = False
|
self.sticking = False
|
||||||
|
|
||||||
self.mouseDragStart = (w / 2, h / 2)
|
self.mouseDragStart = (w / 2, h / 2)
|
||||||
|
|
||||||
@ -561,7 +561,7 @@ class CameraStickyPanMouseAction(ViewAction):
|
|||||||
QtGui.QCursor.setPos(pos)
|
QtGui.QCursor.setPos(pos)
|
||||||
|
|
||||||
def resumeSticking():
|
def resumeSticking():
|
||||||
self._sticking = True
|
self.sticking = True
|
||||||
|
|
||||||
QtCore.QTimer.singleShot(0, resumeSticking)
|
QtCore.QTimer.singleShot(0, resumeSticking)
|
||||||
|
|
||||||
@ -586,6 +586,9 @@ class CameraPanMouseAction(ViewAction):
|
|||||||
def buttonPressEvent(self, event):
|
def buttonPressEvent(self, event):
|
||||||
self.downTime = time.time()
|
self.downTime = time.time()
|
||||||
|
|
||||||
|
if self._stickyAction.sticking:
|
||||||
|
return
|
||||||
|
|
||||||
x = event.x()
|
x = event.x()
|
||||||
y = event.y()
|
y = event.y()
|
||||||
self.mouseDragStart = x, y
|
self.mouseDragStart = x, y
|
||||||
@ -594,7 +597,7 @@ class CameraPanMouseAction(ViewAction):
|
|||||||
if self.downTime is None:
|
if self.downTime is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
if event.view.stickyMouselook and time.time() - self.downTime < self._stickyThreshold:
|
if self._stickyAction.sticking or (event.view.stickyMouselook and time.time() - self.downTime < self._stickyThreshold):
|
||||||
self._stickyAction.toggleSticky(event)
|
self._stickyAction.toggleSticky(event)
|
||||||
|
|
||||||
self.mouseDragStart = None
|
self.mouseDragStart = None
|
||||||
|
Reference in New Issue
Block a user