changeset 71391:baf495881cff

(mouse-drag-vertical-line-rightward-window): New function. (mouse-drag-vertical-line): Call it.
author Richard M. Stallman <rms@gnu.org>
date Mon, 19 Jun 2006 21:47:23 +0000
parents 927d95604b99
children 49d0fb4a69d7
files lisp/mouse.el
diffstat 1 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mouse.el	Mon Jun 19 21:46:54 2006 +0000
+++ b/lisp/mouse.el	Mon Jun 19 21:47:23 2006 +0000
@@ -529,6 +529,24 @@
       (mouse-drag-mode-line-1 start-event nil))))
 
 
+(defun mouse-drag-vertical-line-rightward-window (window)
+  "Return a window that is immediately to the right of WINDOW, or nil."
+  (let ((bottom (nth 3 (window-inside-edges window)))
+	(left (nth 0 (window-inside-edges window)))
+	best best-right
+	(try (previous-window window)))
+    (while (not (eq try window))
+      (let ((try-top (nth 1 (window-inside-edges try)))
+	    (try-bottom (nth 3 (window-inside-edges try)))
+	    (try-right (nth 2 (window-inside-edges try))))
+	(if (and (< try-top bottom)
+		 (>= try-bottom bottom)
+		 (< try-right left)
+		 (or (null best-right) (> try-right best-right)))
+	    (setq best-right try-right best try)))
+      (setq try (previous-window try)))
+    best))
+
 (defun mouse-drag-vertical-line (start-event)
   "Change the width of a window by dragging on the vertical line."
   (interactive "e")
@@ -594,7 +612,8 @@
 			;; adjust the window on the left.
 			(if (eq which-side 'right)
 			    (selected-window)
-			  (previous-window))))
+			  (mouse-drag-vertical-line-rightward-window
+			   (selected-window)))))
 		   (setq x (- (car (cdr mouse))
 			      (if (eq which-side 'right) 0 2))
 			 edges (window-edges window)