--- orig/core.lisp +++ mod/core.lisp @@ -633,15 +633,21 @@ (let ((f (frame-data screen n))) (frame-y f))))) +(defun tree-right (screen tree) + (tree-accum-fn tree #'max (lambda (n) + (let ((f (frame-data screen n))) + (+ (frame-x f) (frame-width f)))))) + +(defun tree-bottom (screen tree) + (tree-accum-fn tree #'max (lambda (n) + (let ((f (frame-data screen n))) + (+ (frame-y f) (frame-height f)))))) + (defun tree-width (screen tree) - (tree-accum-fn tree #'+ (lambda (n) - (let ((f (frame-data screen n))) - (frame-width f))))) + (- (tree-right screen tree) (tree-x screen tree))) (defun tree-height (screen tree) - (tree-accum-fn tree #'+ (lambda (n) - (let ((f (frame-data screen n))) - (frame-height f))))) + (- (tree-bottom screen tree) (tree-y screen tree))) (defun tree-row-split (screen tree) "Return t if the children of tree are stacked vertically"