From 9aba119d72dde74a86d436f6e4f934baa37ecbe9 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sat, 25 Aug 2012 16:52:02 +0200 Subject: [PATCH] Handle evening window heights more correctly (Bug#11880) and (Bug#12091). * window.el (window--even-window-heights): Even heights when WINDOW and the selected window form a vertical combination. (display-buffer-use-some-window): Provide that window used gets sized back by quit-window. (Bug#11880) and (Bug#12091) --- lisp/ChangeLog | 7 +++++++ lisp/window.el | 35 ++++++++++++++++------------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5236ad55903..94ad0badad0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-08-25 Martin Rudalics + + * window.el (window--even-window-heights): Even heights when + WINDOW and the selected window form a vertical combination. + (display-buffer-use-some-window): Provide that window used gets + sized back by quit-window. (Bug#11880) and (Bug#12091) + 2012-08-24 Paul Eggert Fix file time stamp problem with bzr and CVS (Bug#12001). diff --git a/lisp/window.el b/lisp/window.el index 8f402f0c2b9..8aee27f44e8 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -4911,23 +4911,19 @@ Do this only if these windows are vertically adjacent to each other, `even-window-heights' is non-nil, and the selected window is higher than WINDOW." (when (and even-window-heights - (not (eq window (selected-window))) - ;; Don't resize minibuffer windows. - (not (window-minibuffer-p (selected-window))) - (> (window-height (selected-window)) (window-height window)) - (eq (window-frame window) (window-frame (selected-window))) - (let ((sel-edges (window-edges (selected-window))) - (win-edges (window-edges window))) - (and (= (nth 0 sel-edges) (nth 0 win-edges)) - (= (nth 2 sel-edges) (nth 2 win-edges)) - (or (= (nth 1 sel-edges) (nth 3 win-edges)) - (= (nth 3 sel-edges) (nth 1 win-edges)))))) - (let ((window-min-height 1)) - ;; Don't throw an error if we can't even window heights for - ;; whatever reason. - (condition-case nil - (enlarge-window (/ (- (window-height window) (window-height)) 2)) - (error nil))))) + ;; Even iff WINDOW forms a vertical combination with the + ;; selected window, and WINDOW's height exceeds that of the + ;; selected window, see also bug#11880. + (window-combined-p window) + (= (window-child-count (window-parent window)) 2) + (eq (window-parent) (window-parent window)) + (> (window-total-height) (window-total-height window))) + ;; Don't throw an error if we can't even window heights for + ;; whatever reason. + (condition-case nil + (enlarge-window + (/ (- (window-total-height window) (window-total-height)) 2)) + (error nil)))) (defun window--display-buffer (buffer window type &optional dedicated) "Display BUFFER in WINDOW and make its frame visible. @@ -5334,8 +5330,9 @@ that frame." window)) (get-largest-window 0 not-this-window)))) (when (window-live-p window) - (window--even-window-heights window) - (prog1 (window--display-buffer buffer window 'reuse) + (prog1 + (window--display-buffer buffer window 'reuse) + (window--even-window-heights window) (unless (cdr (assq 'inhibit-switch-frame alist)) (window--maybe-raise-frame (window-frame window))))))) -- 2.39.2