module Zori
  # A widget may be draggable
  module Draggable
    def on_mouse_axes(t, x, y, z, w, dx, dy, dz, dw)
      super rescue nil
      # super if defined? super doesn't seem to work yet or maybe I should
      # update my ruby
      if drag? 
         move_to(x - @drag_dx, y - @drag_dy)
      end
      return false # don't consume the event
    end
    
    def on_mouse_button_down(t, x, y, z, w, b)
      super rescue nil
      return false unless self.inside?(x, y)
      unless @action
        self.drag
        @drag_dx = x - self.x
        @drag_dy = y - self.y  
        puts "Click! #{drag?}"
        return true
      end
      return false
    end
    
    def on_mouse_button_up(t, x, y, z, w, b)
      super rescue nil
      self.drop if self.drag?
      puts "Release! #{drag?}"
      return false unless self.inside?(x, y)
    end
        
    def can_drag?
      return true
    end
    
  end
end