# File gnomecanvas/sample/canvas-curve.rb, line 113
  def canvas_event(item, event)
    case event.event_type
    when Gdk::Event::BUTTON_PRESS
      return false if event.button != 1

      case @current_state
      when STATE_INIT
        draw_curve(item, event.x, event.y)
        @current_state = STATE_FIRST_PRESS
      when STATE_FIRST_RELEASE
        draw_curve(item, event.x, event.y)
        @current_state = STATE_SECOND_PRESS
      when STATE_SECOND_PRESS
        draw_curve(item, event.x, event.y)
        @current_state = STATE_INIT
      else
        raise format("shouldn't have reached here %d", @current_state)
      end
    when Gdk::Event::BUTTON_RELEASE
      return false if event.button != 1

      case @current_state
      when STATE_FIRST_PRESS
        draw_curve(item, event.x, event.y)
        @current_state = STATE_FIRST_RELEASE
      end
    when Gdk::Event::MOTION_NOTIFY
      case @current_state
      when STATE_FIRST_PRESS
        draw_curve(item, event.x, event.y)
      end
    end
    false
  end