@kill_cursor()
return
on_page_up_key: (e) ->
+ if @wrap2.scrollTop is 0
+ return unless @cursor?
+ new_cursor = first_cursor_position @tree
+ if new_cursor?
+ if new_cursor.n isnt @cursor.n or new_cursor.i isnt @cursor.i
+ @move_cursor new_cursor
+ return
if @cursor?
screen_y = @cursor.y - @wrap2.scrollTop
scroll_amount = @wrap2_height - breathing_room
if @cursor?
@move_cursor_into_view screen_y + @wrap2.scrollTop
on_page_down_key: (e) ->
- if @cursor?
- screen_y = @cursor.y - @wrap2.scrollTop
- scroll_amount = @wrap2_height - breathing_room
lowest_scrollpos = @wrap2.scrollHeight - @wrap2_height
- if @wrap2.scrollTop is lowest_scrollpos # already at bottom
+ if @wrap2.scrollTop is lowest_scrollpos
return unless @cursor?
- # move cursor to bottom
new_cursor = last_cursor_position @tree
if new_cursor?
if new_cursor.n isnt @cursor.n or new_cursor.i isnt @cursor.i
@move_cursor new_cursor
return
+ if @cursor?
+ screen_y = @cursor.y - @wrap2.scrollTop
+ scroll_amount = @wrap2_height - breathing_room
@wrap2.scrollTop = Math.min lowest_scrollpos, @wrap2.scrollTop + scroll_amount
if @cursor?
@move_cursor_into_view screen_y + @wrap2.scrollTop