emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master aad13e61dbf: Fix 'toggle-side-windows' with 3 or more side window


From: Eli Zaretskii
Subject: master aad13e61dbf: Fix 'toggle-side-windows' with 3 or more side windows
Date: Sat, 8 Jul 2023 05:05:16 -0400 (EDT)

branch: master
commit aad13e61dbf949ca6dea1ff492baca82f40a5738
Author: Martin Rudalics <rudalics@gmx.at>
Commit: Eli Zaretskii <eliz@gnu.org>

    Fix 'toggle-side-windows' with 3 or more side windows
    
    * lisp/window.el (window--state-put-1): Consider
    'window-combined-p' when determining 'window-combination-limit'.
    (window-state-put): Bind 'window-combination-limit' and
    'window-combination-resize' to nil.  (Bug#64405)
---
 lisp/window.el | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/lisp/window.el b/lisp/window.el
index 5964fe37ee6..424f1319ab7 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -6178,7 +6178,14 @@ value can be also stored on disk and read back in a new 
session."
       (let* ((horizontal (eq type 'hc))
             (total (window-size window horizontal pixelwise))
              (first t)
-             (window-combination-limit (cdr (assq 'combination-limit state)))
+            ;; Make sure to make a new parent window for a horizontal
+            ;; or vertical combination embedded in one of the same type
+            ;; (see Bug#50867 and Bug#64405).
+            (window-combination-limit
+             (and (or (eq (cdr (assq 'combination-limit state)) t)
+                      (and horizontal (window-combined-p window t))
+                      (and (not horizontal) (window-combined-p window)))
+                  t))
             size new)
        (dolist (item state)
          ;; Find the next child window.  WINDOW always points to the
@@ -6418,7 +6425,10 @@ windows can get as small as `window-safe-min-height' and
                           head)))
         (min-width (cdr (assq
                          (if pixelwise 'min-pixel-width 'min-weight)
-                         head))))
+                         head)))
+        ;; Bind the following two variables.  `window--state-put-1' has
+        ;; to fully control them (see Bug#50867 and Bug#64405).
+        window-combination-limit window-combination-resize)
     (if (and (not totals)
             (or (> min-height (window-size window nil pixelwise))
                 (> min-width (window-size window t pixelwise)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]