]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/gridmovers.py
added missing button state
[wxWidgets.git] / wxPython / wx / lib / gridmovers.py
index 2f0f0ead169feeea23004fc07daac7071737a81e..866fee364e46d9ecea0175807c8b7ce78b79c646 100644 (file)
@@ -74,7 +74,7 @@ def _ColToRect(self,col):
     if self.GetNumberRows() > 0:
         rect = self.CellToRect(0,col)
     else:
     if self.GetNumberRows() > 0:
         rect = self.CellToRect(0,col)
     else:
-        rect = wxRect()
+        rect = wx.Rect()
         rect.height = self.GetColLabelSize()
         rect.width = self.GetColSize(col)
 
         rect.height = self.GetColLabelSize()
         rect.width = self.GetColSize(col)
 
@@ -91,7 +91,7 @@ def _RowToRect(self,row):
     if self.GetNumberCols() > 0:
         rect = self.CellToRect(row,0)
     else:
     if self.GetNumberCols() > 0:
         rect = self.CellToRect(row,0)
     else:
-        rect = wxRect()
+        rect = wx.Rect()
         rect.width = self.GetRowLabelSize()
         rect.height = self.GetRowSize(row)
 
         rect.width = self.GetRowLabelSize()
         rect.height = self.GetRowSize(row)
 
@@ -129,7 +129,7 @@ class ColDragWindow(wx.Window):
     def _GetInsertionInfo(self):
         parent = self.GetParent()
         sx = parent.GetViewStart()[0] * self.ux
     def _GetInsertionInfo(self):
         parent = self.GetParent()
         sx = parent.GetViewStart()[0] * self.ux
-        sx -= parent._rlSize
+        sx -= parent.GetRowLabelSize()
         x = self.GetPosition()[0]
         w = self.GetSize()[0]
         sCol = parent.XToCol(x + sx)
         x = self.GetPosition()[0]
         w = self.GetSize()[0]
         sCol = parent.XToCol(x + sx)
@@ -192,7 +192,7 @@ class RowDragWindow(wx.Window):
     def _GetInsertionInfo(self):
         parent = self.GetParent()
         sy = parent.GetViewStart()[1] * self.uy
     def _GetInsertionInfo(self):
         parent = self.GetParent()
         sy = parent.GetViewStart()[1] * self.uy
-        sy -= parent._clSize
+        sy -= parent.GetColLabelSize()
         y = self.GetPosition()[1]
         h = self.GetSize()[1]
         sRow = parent.YToRow(y + sy)
         y = self.GetPosition()[1]
         h = self.GetSize()[1]
         sRow = parent.YToRow(y + sy)
@@ -236,7 +236,6 @@ class GridColMover(wx.EvtHandler):
         wx.EvtHandler.__init__(self)
 
         self.grid = grid
         wx.EvtHandler.__init__(self)
 
         self.grid = grid
-        self.grid._rlSize = self.grid.GetRowLabelSize()
         self.lwin = grid.GetGridColLabelWindow()
         self.lwin.PushEventHandler(self)
         self.colWin = None
         self.lwin = grid.GetGridColLabelWindow()
         self.lwin.PushEventHandler(self)
         self.colWin = None
@@ -252,7 +251,10 @@ class GridColMover(wx.EvtHandler):
 
     def OnMouseMove(self,evt):
         if self.isDragging:
 
     def OnMouseMove(self,evt):
         if self.isDragging:
-            if abs(self.startX - evt.m_x) >= 3:
+            _rlSize = self.grid.GetRowLabelSize()
+            if abs(self.startX - evt.m_x) >= 3 \
+                   and abs(evt.m_x - self.lastX) >= 3:
+                self.lastX = evt.m_x 
                 self.didMove = True
                 sx,y = self.grid.GetViewStart()
                 w,h = self.lwin.GetClientSize()
                 self.didMove = True
                 sx,y = self.grid.GetViewStart()
                 w,h = self.lwin.GetClientSize()
@@ -280,20 +282,20 @@ class GridColMover(wx.EvtHandler):
 
                 px = x - self.cellX
 
 
                 px = x - self.cellX
 
-                if px < 0 + self.grid._rlSize: px = 0 + self.grid._rlSize
+                if px < 0 + _rlSize: px = 0 + _rlSize
 
 
-                if px > w - self.colWin.GetSize()[0] + self.grid._rlSize:
-                    px = w - self.colWin.GetSize()[0] + self.grid._rlSize
+                if px > w - self.colWin.GetSize()[0] + _rlSize:
+                    px = w - self.colWin.GetSize()[0] + _rlSize
 
                 self.colWin.DisplayAt(px,y)
                 return
 
 
                 self.colWin.DisplayAt(px,y)
                 return
 
-        evt.Skip()
 
     def OnPress(self,evt):
 
     def OnPress(self,evt):
-        self.startX = evt.m_x
+        self.startX = self.lastX = evt.m_x
+        _rlSize = self.grid.GetRowLabelSize()
         sx = self.grid.GetViewStart()[0] * self.ux
         sx = self.grid.GetViewStart()[0] * self.ux
-        sx -= self.grid._rlSize
+        sx -= _rlSize
         px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y)
         px,py = self.grid.ScreenToClientXY(px,py)
 
         px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y)
         px,py = self.grid.ScreenToClientXY(px,py)
 
@@ -308,12 +310,13 @@ class GridColMover(wx.EvtHandler):
         self.cellX = px + sx - rect.x
         size = self.lwin.GetSize()
         rect.y = 0
         self.cellX = px + sx - rect.x
         size = self.lwin.GetSize()
         rect.y = 0
-        rect.x -= sx + self.grid._rlSize
+        rect.x -= sx + _rlSize
         rect.height = size[1]
         colImg = self._CaptureImage(rect)
         self.colWin = ColDragWindow(self.grid,colImg,col)
         self.colWin.Show(False)
         self.lwin.CaptureMouse()
         rect.height = size[1]
         colImg = self._CaptureImage(rect)
         self.colWin = ColDragWindow(self.grid,colImg,col)
         self.colWin.Show(False)
         self.lwin.CaptureMouse()
+        evt.Skip()
 
     def OnRelease(self,evt):
         if self.isDragging:
 
     def OnRelease(self,evt):
         if self.isDragging:
@@ -325,7 +328,7 @@ class GridColMover(wx.EvtHandler):
                 px = self.lwin.ClientToScreenXY(self.startX,0)[0]
                 px = self.grid.ScreenToClientXY(px,0)[0]
                 sx = self.grid.GetViewStart()[0] * self.ux
                 px = self.lwin.ClientToScreenXY(self.startX,0)[0]
                 px = self.grid.ScreenToClientXY(px,0)[0]
                 sx = self.grid.GetViewStart()[0] * self.ux
-                sx -= self.grid._rlSize
+                sx -= self.grid.GetRowLabelSize()
                 col = self.grid.XToCol(px+sx)
 
                 if col != wx.NOT_FOUND:
                 col = self.grid.XToCol(px+sx)
 
                 if col != wx.NOT_FOUND:
@@ -356,7 +359,6 @@ class GridRowMover(wx.EvtHandler):
         wx.EvtHandler.__init__(self)
 
         self.grid = grid
         wx.EvtHandler.__init__(self)
 
         self.grid = grid
-        self.grid._clSize = self.grid.GetColLabelSize()
         self.lwin = grid.GetGridRowLabelWindow()
         self.lwin.PushEventHandler(self)
         self.rowWin = None
         self.lwin = grid.GetGridRowLabelWindow()
         self.lwin.PushEventHandler(self)
         self.rowWin = None
@@ -372,7 +374,10 @@ class GridRowMover(wx.EvtHandler):
 
     def OnMouseMove(self,evt):
         if self.isDragging:
 
     def OnMouseMove(self,evt):
         if self.isDragging:
-            if abs(self.startY - evt.m_y) >= 3:
+            _clSize = self.grid.GetColLabelSize()
+            if abs(self.startY - evt.m_y) >= 3 \
+                   and abs(evt.m_y - self.lastY) >= 3:
+                self.lastY = evt.m_y
                 self.didMove = True
                 x,sy = self.grid.GetViewStart()
                 w,h = self.lwin.GetClientSizeTuple()
                 self.didMove = True
                 x,sy = self.grid.GetViewStart()
                 w,h = self.lwin.GetClientSizeTuple()
@@ -402,21 +407,21 @@ class GridRowMover(wx.EvtHandler):
 
                 py = y - self.cellY
 
 
                 py = y - self.cellY
 
-                if py < 0 + self.grid._clSize: 
-                    py = 0 + self.grid._clSize
+                if py < 0 + _clSize: 
+                    py = 0 + _clSize
 
 
-                if py > h - self.rowWin.GetSize()[1] + self.grid._clSize:
-                    py = h - self.rowWin.GetSize()[1] + self.grid._clSize
+                if py > h - self.rowWin.GetSize()[1] + _clSize:
+                    py = h - self.rowWin.GetSize()[1] + _clSize
 
                 self.rowWin.DisplayAt(x,py)
                 return
 
 
                 self.rowWin.DisplayAt(x,py)
                 return
 
-        evt.Skip()
 
     def OnPress(self,evt):
 
     def OnPress(self,evt):
-        self.startY = evt.m_y
+        self.startY = self.lastY = evt.m_y
+        _clSize = self.grid.GetColLabelSize()
         sy = self.grid.GetViewStart()[1] * self.uy
         sy = self.grid.GetViewStart()[1] * self.uy
-        sy -= self.grid._clSize
+        sy -= _clSize
         px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y)
         px,py = self.grid.ScreenToClientXY(px,py)
 
         px,py = self.lwin.ClientToScreenXY(evt.m_x,evt.m_y)
         px,py = self.grid.ScreenToClientXY(px,py)
 
@@ -431,12 +436,13 @@ class GridRowMover(wx.EvtHandler):
         self.cellY = py + sy - rect.y
         size = self.lwin.GetSize()
         rect.x = 0
         self.cellY = py + sy - rect.y
         size = self.lwin.GetSize()
         rect.x = 0
-        rect.y -= sy + self.grid._clSize
+        rect.y -= sy + _clSize
         rect.width = size[0]
         rowImg = self._CaptureImage(rect)
         self.rowWin = RowDragWindow(self.grid,rowImg,row)
         self.rowWin.Show(False)
         self.lwin.CaptureMouse()
         rect.width = size[0]
         rowImg = self._CaptureImage(rect)
         self.rowWin = RowDragWindow(self.grid,rowImg,row)
         self.rowWin.Show(False)
         self.lwin.CaptureMouse()
+        evt.Skip()
 
     def OnRelease(self,evt):
         if self.isDragging:
 
     def OnRelease(self,evt):
         if self.isDragging:
@@ -448,7 +454,7 @@ class GridRowMover(wx.EvtHandler):
                 py = self.lwin.ClientToScreenXY(0,self.startY)[1]
                 py = self.grid.ScreenToClientXY(0,py)[1]
                 sy = self.grid.GetViewStart()[1] * self.uy
                 py = self.lwin.ClientToScreenXY(0,self.startY)[1]
                 py = self.grid.ScreenToClientXY(0,py)[1]
                 sy = self.grid.GetViewStart()[1] * self.uy
-                sy -= self.grid._clSize
+                sy -= self.grid.GetColLabelSize()
                 row = self.grid.YToRow(py + sy)
 
                 if row != wx.NOT_FOUND:
                 row = self.grid.YToRow(py + sy)
 
                 if row != wx.NOT_FOUND: