]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix resizing of minibuffer windows (Bug#11276).
authorMartin Rudalics <rudalics@gmx.at>
Fri, 20 Apr 2012 08:49:24 +0000 (10:49 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Fri, 20 Apr 2012 08:49:24 +0000 (10:49 +0200)
* window.el (adjust-window-trailing-edge, enlarge-window)
(shrink-window, window-resize):
* mouse.el (mouse-drag-line): Fix resizing of minibuffer
windows (Bug#11276).

lisp/ChangeLog
lisp/mouse.el
lisp/window.el

index ddd306b98dfdcc0263bfa3cb2b3dfeaf0380ee68..e139a7b2bba26ada057a71d4091c0f4e7fc22c12 100644 (file)
@@ -1,3 +1,10 @@
+2012-04-20  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (adjust-window-trailing-edge, enlarge-window)
+       (shrink-window, window-resize):
+       * mouse.el (mouse-drag-line): Fix resizing of minibuffer
+       windows (Bug#11276).
+
 2012-04-20  Dan Nicolaescu  <dann@gnu.org>
 
        * battery.el (battery-echo-area-format): Display remaining time
index 2e1194837975fcded708f2829ba81345590e58ea..20a78e556517c1d990a6fee2a777bedab2dbd4ca 100644 (file)
@@ -404,13 +404,16 @@ must be one of the symbols header, mode, or vertical."
                       (or mouse-1-click-in-non-selected-windows
                           (eq window (selected-window)))
                       (mouse-on-link-p start)))
-        (enlarge-minibuffer
+        (resize-minibuffer
+         ;; Resize the minibuffer window if it's on the same frame as
+         ;; and immediately below the position window and it's either
+         ;; active or `resize-mini-windows' is nil.
          (and (eq line 'mode)
-              (not resize-mini-windows)
               (eq (window-frame minibuffer-window) frame)
-              (not (one-window-p t frame))
               (= (nth 1 (window-edges minibuffer-window))
-                 (nth 3 (window-edges window)))))
+                 (nth 3 (window-edges window)))
+              (or (not resize-mini-windows)
+                  (eq minibuffer-window (active-minibuffer-window)))))
         (which-side
          (and (eq line 'vertical)
               (or (cdr (assq 'vertical-scroll-bars (frame-parameters frame)))
@@ -425,7 +428,7 @@ must be one of the symbols header, mode, or vertical."
      ((eq line 'mode)
       ;; Check whether mode-line can be dragged at all.
       (when (and (window-at-side-p window 'bottom)
-                (not enlarge-minibuffer))
+                (not resize-minibuffer))
        (setq done t)))
      ((eq line 'vertical)
       ;; Get the window to adjust for the vertical case.
@@ -499,13 +502,9 @@ must be one of the symbols header, mode, or vertical."
            ;; Remember that we dragged.
            (setq dragged t))
 
-         (cond
-          (enlarge-minibuffer
-           (adjust-window-trailing-edge window growth))
-          ((eq line 'mode)
-           (adjust-window-trailing-edge window growth))
-          (t
-           (adjust-window-trailing-edge window (- growth)))))))
+         (if (eq line 'mode)
+             (adjust-window-trailing-edge window growth)
+           (adjust-window-trailing-edge window (- growth))))))
 
       ;; Presumably, if this was just a click, the last event should be
       ;; `mouse-1', whereas if this did move the mouse, it should be a
index 28abec426804d12b848c7623c89ac9707f63f24f..9afc69d543d839a148da2825e30a82e820bc3ea3 100644 (file)
@@ -1486,8 +1486,10 @@ instead."
     (cond
      ((eq window (frame-root-window frame))
       (error "Cannot resize the root window of a frame"))
-     ((window-minibuffer-p window)
-      (window--resize-mini-window window delta))
+     ((window-minibuffer-p window) 
+      (if horizontal
+         (error "Cannot resize minibuffer window horizontally")
+       (window--resize-mini-window window delta)))
      ((window--resizable-p window delta horizontal ignore)
       (window--resize-reset frame horizontal)
       (window--resize-this-window window delta horizontal ignore t)
@@ -2002,17 +2004,25 @@ right.  If DELTA is less than zero, move the edge upwards or to
 the left.  If the edge can't be moved by DELTA lines or columns,
 move it as far as possible in the desired direction."
   (setq window (window-normalize-window window))
-  (let ((frame (window-frame window))
-       (right window)
-       left this-delta min-delta max-delta)
+  (let* ((frame (window-frame window))
+        (minibuffer-window (minibuffer-window frame))
+        (right window)
+        left this-delta min-delta max-delta)
     ;; Find the edge we want to move.
     (while (and (or (not (window-combined-p right horizontal))
                    (not (window-right right)))
                (setq right (window-parent right))))
     (cond
-     ((and (not right) (not horizontal) (not resize-mini-windows)
-          (eq (window-frame (minibuffer-window frame)) frame))
-      (window--resize-mini-window (minibuffer-window frame) (- delta)))
+     ((and (not right) (not horizontal)
+          ;; Resize the minibuffer window if it's on the same frame as
+          ;; and immediately below WINDOW and it's either active or
+          ;; `resize-mini-windows' is nil.
+          (eq (window-frame minibuffer-window) frame)
+          (= (nth 1 (window-edges minibuffer-window))
+             (nth 3 (window-edges window)))
+          (or (not resize-mini-windows)
+              (eq minibuffer-window (active-minibuffer-window))))
+      (window--resize-mini-window minibuffer-window (- delta)))
      ((or (not (setq left right)) (not (setq right (window-right right))))
       (if horizontal
          (error "No window on the right of this one")
@@ -2113,6 +2123,10 @@ Return nil."
    ((zerop delta))
    ((window-size-fixed-p nil horizontal)
     (error "Selected window has fixed size"))
+   ((window-minibuffer-p)
+    (if horizontal
+       (error "Cannot resize minibuffer window horizontally")
+      (window--resize-mini-window (selected-window) delta)))
    ((window--resizable-p nil delta horizontal)
     (window-resize nil delta horizontal))
    (t
@@ -2135,6 +2149,10 @@ Return nil."
    ((zerop delta))
    ((window-size-fixed-p nil horizontal)
     (error "Selected window has fixed size"))
+   ((window-minibuffer-p)
+    (if horizontal
+       (error "Cannot resize minibuffer window horizontally")
+      (window--resize-mini-window (selected-window) (- delta))))
    ((window--resizable-p nil (- delta) horizontal)
     (window-resize nil (- delta) horizontal))
    (t