LDViewer.py
changeset 563 3f92a5e18804
parent 554 08c26c62f5a7
child 586 9aa96a36cf33
--- a/LDViewer.py	Thu Sep 22 10:56:52 2011 +0200
+++ b/LDViewer.py	Thu Sep 22 15:33:31 2011 +0200
@@ -259,16 +259,18 @@
                 return i
         return None
 
-    def FindElement(self, pos, exclude_group = False):
+    def FindElement(self, event, exclude_group = False):
         if self.GetDrawingMode() == FREEDRAWING_MODE:
-            return Viewer.FindElement(self, pos, exclude_group)
+            return Viewer.FindElement(self, event, exclude_group)
         
+        dc = self.GetLogicalDC()
+        pos = event.GetLogicalPosition(dc)
         if self.SelectedElement and not isinstance(self.SelectedElement, (Graphic_Group, Wire)):
             if self.SelectedElement.HitTest(pos) or self.SelectedElement.TestHandle(pos) != (0, 0):
                 return self.SelectedElement
         elements = []
         for element in self.GetElements(sort_wires=True):
-            if element.HitTest(pos) or element.TestHandle(pos) != (0, 0):
+            if element.HitTest(pos) or element.TestHandle(event) != (0, 0):
                 elements.append(element)
         if len(elements) == 1:
             return elements[0]
@@ -296,9 +298,7 @@
         if self.GetDrawingMode() == FREEDRAWING_MODE:
             Viewer.OnViewerLeftDown(self, event)
         elif self.Mode == MODE_SELECTION:
-            dc = self.GetLogicalDC()
-            pos = event.GetLogicalPosition(dc)
-            element = self.FindElement(pos)
+            element = self.FindElement(event)
             if self.SelectedElement:
                 if not isinstance(self.SelectedElement, Graphic_Group):
                     if self.SelectedElement != element:
@@ -323,11 +323,11 @@
                     self.SelectedElement = None
             if element:
                 self.SelectedElement = element
-                self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
+                self.SelectedElement.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
                 self.SelectedElement.Refresh()
             else:
                 self.rubberBand.Reset()
-                self.rubberBand.OnLeftDown(event, dc, self.Scaling)
+                self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
         event.Skip()
 
     def OnViewerLeftUp(self, event):
@@ -366,9 +366,7 @@
         if self.GetDrawingMode() == FREEDRAWING_MODE:
             Viewer.OnViewerRightUp(self, event)
         else:
-            dc = self.GetLogicalDC()
-            pos = event.GetLogicalPosition(dc)
-            element = self.FindElement(pos)
+            element = self.FindElement(event)
             if element:
                 if self.SelectedElement and self.SelectedElement != element:
                     self.SelectedElement.SetSelected(False)
@@ -377,7 +375,7 @@
                     self.SelectedElement.SetSelectedSegment(0)
                 else:
                     self.SelectedElement.SetSelected(True)
-                    self.SelectedElement.OnRightUp(event, dc, self.Scaling)
+                    self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
                     self.SelectedElement.Refresh()
                 wx.CallAfter(self.SetCurrentCursor, 0)
         event.Skip()