# File lib/luck/listbox.rb, line 109
  def handle_char char
    if char == "\n"
      handler.call self, @data[@index] if handler
    elsif char == :up
      @index -= 1 if @index > 0
      @offset -= 1 if @offset > @index
    elsif char == :down
      if @index < @data.size - 1
        @index += 1 
        @offset += 1 if @offset + fit_data[1] <= @index
      end
    elsif char == :pageup
      @offset = [0, @offset - fit_data_back[1]].max
      @index = [@offset + fit_data[1] - 1, @index].min
    elsif char == :pagedown
      @offset = [@data.size - 1, @offset + fit_data[1]].min
      @offset = [@offset, @data.size - fit_data_back(@data.size)[1]].min
      @index = [@offset, @index].max
    end
    redraw
  end