Update of /project/beirc/cvsroot/beirc In directory clnet:/tmp/cvs-serv13990
Modified Files: application.lisp Log Message:
"repaired define-window-switcher", take #2.
While the previous check-in was correct, it was still converting pages to panes and back to pages. Here's a new version using just pages.
--- /project/beirc/cvsroot/beirc/application.lisp 2007/02/24 19:25:49 1.86 +++ /project/beirc/cvsroot/beirc/application.lisp 2007/02/24 19:33:37 1.87 @@ -419,30 +419,28 @@ () (let* ((tab-layout (find-pane-named *application-frame* 'query)) - (current-pane (tab-page-pane - (tab-layout-enabled-page tab-layout))) - (list-of-panes (mapcar #'tab-page-pane - (tab-layout-pages tab-layout))) - (n-panes (length list-of-panes)) - (current-pane-position (position current-pane list-of-panes)) - (position current-pane-position) + (current-page (tab-layout-enabled-page tab-layout)) + (list-of-pages (tab-layout-pages tab-layout)) + (n-pages (length list-of-pages)) + (current-page-position (position current-page list-of-pages)) + (position current-page-position) (predicate ,predicate) (step-by ,direction) - (start-position (- current-pane-position (* step-by n-panes))) - (end-position (+ current-pane-position (* step-by n-panes)))) - (when list-of-panes + (start-position (- current-page-position (* step-by n-pages))) + (end-position (+ current-page-position (* step-by n-pages)))) + (when list-of-pages (setf position (loop for i = (+ step-by start-position) then (+ i step-by) until (or (= i end-position) - (funcall predicate (nth (mod (+ n-panes i) n-panes) list-of-panes))) + (funcall predicate (nth (mod (+ n-pages i) n-pages) list-of-pages))) finally (return i))) - (switch-to-page (sheet-to-page (nth (mod (+ n-panes position) n-panes) list-of-panes)))))))) - (labels ((pane-interesting-p (pane) - (let ((receiver (receiver-from-tab-page (sheet-to-page pane)))) + (switch-to-page (nth (mod (+ n-pages position) n-pages) list-of-pages))))))) + (labels ((page-interesting-p (page) + (let ((receiver (receiver-from-tab-page page))) (or (> (messages-directed-to-me receiver) 0) (> (unseen-messages receiver) 0))))) - (define-window-switcher com-interesting-window-next (#\Tab :control) 1 #'pane-interesting-p) - (define-window-switcher com-interesting-window-previous (:iso-left-tab :control :shift) -1 #'pane-interesting-p) + (define-window-switcher com-interesting-window-next (#\Tab :control) 1 #'page-interesting-p) + (define-window-switcher com-interesting-window-previous (:iso-left-tab :control :shift) -1 #'page-interesting-p) (define-window-switcher com-window-next (:next :control) 1 (constantly t)) (define-window-switcher com-window-previous (:prior :control) -1 (constantly t))))