     view = view.getBoundingClientRect()
     pane.bottom >= view.top >= pane.top or pane.bottom >= view.bottom >= pane.top
 
-  focusVisible: (view, force) ->
-    if force or @isVisible view
-      view.focus()
-
-  focusLast: (force) ->
-    if @hasFocus() and (view = @model.items[@model.items.length-1]?.view)
-      @focusVisible view, force
+  enterLastInput: ->
+    y = @scrollTop
+    atom.views.getView(@lastInput)?.focus()
+    s = @lastInput.onDidChange =>
+      atom.views.getView(@lastInput)?.focus()
+      s.dispose()
+    @scrollTop = y
 
   # Various cell views
   iconView: (name) ->

    @model.onDidClear => @clear()
    @model.onDidDeleteFirstItems (n) => @deleteFirstItems n
    @model.onDone => if @hasFocus() then @focus()
    @model.onFocusInput (force) => @focusLast force
    @model.onLoading (status) => @loading status
    @model.onDidUpdateItem ({item, key}) =>
      if key is 'icon'    then @updateIcon item


    @onfocus = =>
      if document.activeElement == this and @model.getInput()
        @enterLastInput()

    # determine if we should scroll down
    @shouldScroll = true
