code: def on_drag_event(self, event):
          '''handle mouse drags'''
          state = self.state
          if not state.can_drag:
              return
          newpos = self.image_coordinates(event.GetPosition())
          dx = -(newpos.x - self.mouse_down.x)
          dy = -(newpos.y - self.mouse_down.y)
          self.dragpos = wx.Point(self.dragpos.x+dx,self.dragpos.y+dy)
          self.limit_dragpos()
          self.mouse_down = newpos
          self.need_redraw = True
          self.redraw(f on_drag_event(self, event):
          '''handle mouse drags'''
          state = self.state
          if not state.can_drag:
              return
          newpos = self.image_coordinates(event.GetPosition())
          dx = -(newpos.x - self.mouse_down.x)
          dy = -(newpos.y - self.mouse_down.y)
          self.dragpos = wx.Point(self.dragpos.x+dx,self.dragpos.y+dy)
          self.limit_dragpos()
          self.mouse_down = newpos
          self.need_redraw = True
          self.redraw()
docs: handle mouse drags