               (selection! (id :ns-cbx) "loaded")
               (selection! (id :ns-lb) ns1)
               (selection! (id :vars-cbx) "publics")
-              (selection! (id :vars-lb) name1))
+              (selection! (id :vars-lb) name1)
+              (ensure-selection-visible (id :ns-lb))
+              (ensure-selection-visible (id :vars-lb)))
             (if (find-ns (symbol name1))
               ;; should be namespace
               (invoke-soon
                 (selection! (id :ns-lb) name1)
-                (selection! (id :doc-cbx) "Doc"))
+                (selection! (id :doc-cbx) "Doc")
+                (ensure-selection-visible (id :ns-lb))
+                (ensure-selection-visible (id :vars-lb)))
               ;; else must be special-form or class
               (invoke-soon
                 (if (special-form? fqn)

  (action :name "Auto-Refresh"
          :handler (fn [e] (let [root (to-root e)
                                 id (partial select-id root)]
                              (println "e:" e)
                              (println "getSource:" (.getSource e))
                             (if (config (id :auto-refresh-browser-cb) :selected?) 
                               (.start (seesaw.meta/get-meta root :auto-refresh-browser-timer))
                               (.stop (seesaw.meta/get-meta root :auto-refresh-browser-timer)))))))

        selected-var (selection (id :vars-lb))]
    (swap! ns-lb-refresh-atom not)
    (swap! vars-lb-refresh-atom not)
    (when-not (= (selection (id :ns-lb)) selected-ns) 
      (selection! (id :ns-lb) selected-ns)
      (ensure-selection-visible (id :ns-lb))
      (selection! (id :vars-lb) selected-var)
      (ensure-selection-visible (id :vars-lb)))
    (when-not (= (selection (id :vars-lb)) selected-var) 
      (selection! (id :vars-lb) selected-var)
      (ensure-selection-visible (id :vars-lb)))
    {:root root :selected-ns selected-ns :selected-var selected-var}))

;;seesaw.core/toggle-full-screen! (locks up computer!!! don't use)
