--- a/Viewer.py Tue Oct 11 12:08:55 2011 +0200
+++ b/Viewer.py Wed Oct 12 15:08:47 2011 +0200
@@ -533,10 +533,11 @@
self.RefreshHighlightsTimer.Stop()
def SetCurrentCursor(self, cursor):
- global CURSORS
- if self.CurrentCursor != cursor:
- self.CurrentCursor = cursor
- self.SetCursor(CURSORS[cursor])
+ if self.Mode != MODE_MOTION:
+ global CURSORS
+ if self.CurrentCursor != cursor:
+ self.CurrentCursor = cursor
+ self.SetCursor(CURSORS[cursor])
def GetScrolledRect(self, rect):
rect.x, rect.y = self.CalcScrolledPosition(int(rect.x * self.ViewScale[0]),
@@ -729,7 +730,9 @@
# Changes Viewer mode
def SetMode(self, mode):
- if self.Mode != mode or mode == MODE_SELECTION:
+ if self.Mode != mode or mode == MODE_SELECTION:
+ if self.Mode == MODE_MOTION:
+ wx.CallAfter(self.SetCursor, wx.NullCursor)
self.Mode = mode
self.SavedMode = False
else:
@@ -738,7 +741,10 @@
if self.Mode != MODE_SELECTION and self.SelectedElement:
self.SelectedElement.SetSelected(False)
self.SelectedElement = None
-
+ if self.Mode == MODE_MOTION:
+ wx.CallAfter(self.SetCursor, wx.StockCursor(wx.CURSOR_HAND))
+ self.SavedMode = True
+
# Return current drawing mode
def GetDrawingMode(self):
return self.ParentWindow.GetDrawingMode()
@@ -1393,6 +1399,9 @@
MODE_STEP, MODE_TRANSITION, MODE_DIVERGENCE, MODE_JUMP, MODE_ACTION]:
self.rubberBand.Reset()
self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
+ elif self.Mode == MODE_MOTION:
+ self.StartMousePos = event.GetPosition()
+ self.StartScreenPos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL)
event.Skip()
def OnViewerLeftUp(self, event):
@@ -1469,6 +1478,9 @@
else:
self.SelectedElement.OnLeftUp(event, dc, self.Scaling)
wx.CallAfter(self.SetCurrentCursor, 0)
+ elif self.Mode == MODE_MOTION:
+ self.StartMousePos = None
+ self.StartScreenPos = None
if self.Mode != MODE_SELECTION and not self.SavedMode:
wx.CallAfter(self.ParentWindow.ResetCurrentMode)
event.Skip()
@@ -1541,7 +1553,7 @@
refresh = False
dc = self.GetLogicalDC()
pos = GetScaledEventPosition(event, dc, self.Scaling)
- if event.MiddleIsDown():
+ if event.MiddleIsDown() or self.Mode == MODE_MOTION:
if self.StartMousePos is not None and self.StartScreenPos is not None:
new_pos = event.GetPosition()
xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL)
@@ -1608,7 +1620,8 @@
event.Skip()
def OnLeaveViewer(self, event):
- self.StartMousePos = None
+ if self.StartScreenPos is None:
+ self.StartMousePos = None
if self.SelectedElement is not None and self.SelectedElement.GetDragging():
event.Skip()
elif self.HighlightedElement is not None: