olt2でバッファバーの代わりにする(その2)

 この前書いたのはキーボードでoutline-treeに移動して上下とかに動かした時までフォーカスがバッファに移動してしまってolt自体の機能が使い難くなってしまったので、キーで移動した時には反応しない用に修正してみた。前の奴の動作の方が好きな人もいそうだけどまあ、自分は微妙だったので、前のは消してコレに変更。

(defvar treeview::*treeview-click-focas* t)
(defun outline-tree2::outline-tree-set-buffer-by-node (&optional node)
  (treeview::with-app (outline-tree2::*outline-tree-app-id*)
    (unless node
      (setq node (outline-tree2::outline-tree-get-selected-node)))
    (setq node (outline-tree2::outline-tree-get-buffer-node-by-node node))
    (let ((window-list (mapcar 'car (caddr (current-window-configuration))))
          (buffer (outline-tree2::outline-tree-get-buffer-by-node node))
          (current-window (selected-window)))
      (when (and (windowp outline-tree2::*outline-tree-target-window*)
                 (not (eq outline-tree2::*outline-tree-target-window* (selected-window)))
                 (not (minibuffer-window-p outline-tree2::*outline-tree-target-window*))
                 (member outline-tree2::*outline-tree-target-window* window-list))
        (set-window outline-tree2::*outline-tree-target-window*))
      (set-buffer buffer)
      (set-window current-window))
    (winapi:InvalidateRect (get-window-handle) 0 1)
    (winapi:UpdateWindow (get-window-handle))
	(and treeview::*treeview-click-focas*
		 (case *this-command*
		   ('outline-tree2::outline-tree-select-down-key-node nil)
		   ('outline-tree2::outline-tree-select-up-key-node nil)
		   (t (treeview::treeview-focus-editor))))
    (refresh-title-bar)
    (refresh-screen 1)))