]> code.delx.au - gnu-emacs/commitdiff
Handle evening window heights more correctly (Bug#11880) and (Bug#12091).
authorMartin Rudalics <rudalics@gmx.at>
Sat, 25 Aug 2012 14:52:02 +0000 (16:52 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Sat, 25 Aug 2012 14:52:02 +0000 (16:52 +0200)
* 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
lisp/window.el

index 5236ad559038c616fb3add16e2cd8d6c725c178c..94ad0badad05bbd01cc4c737ab4752a40f0a8ad5 100644 (file)
@@ -1,3 +1,10 @@
+2012-08-25  Martin Rudalics  <rudalics@gmx.at>
+
+       * 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  <eggert@cs.ucla.edu>
 
        Fix file time stamp problem with bzr and CVS (Bug#12001).
index 8f402f0c2b9ec46cba64ba706d60818acf59457e..8aee27f44e897a949dba706903f9d20b1a6a7f79 100644 (file)
@@ -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)))))))