changeset 100887:1c4c26872c5c

(display-buffer): When a buffer is displayed in the selected and some other window, and not-this-window is non-nil, try to return that other window instead of popping up a new frame. (Bug#30)
author Martin Rudalics <rudalics@gmx.at>
date Sun, 04 Jan 2009 19:03:09 +0000
parents 19c85c36798d
children 02615af9ba70
files lisp/ChangeLog lisp/window.el
diffstat 2 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Jan 04 13:09:35 2009 +0000
+++ b/lisp/ChangeLog	Sun Jan 04 19:03:09 2009 +0000
@@ -1,3 +1,10 @@
+2009-01-04  Martin Rudalics  <rudalics@gmx.at>
+
+	* window.el (display-buffer): When a buffer is displayed in the
+	selected and some other window, and not-this-window is non-nil,
+	try to return that other window instead of popping up a new
+	frame.  (Bug#30)
+
 2009-01-04  Chong Yidong  <cyd@stupidchicken.com>
 
 	* simple.el (visual-line-mode-map): Remove M-[ and M-] bindings.
--- a/lisp/window.el	Sun Jan 04 13:09:35 2009 +0000
+++ b/lisp/window.el	Sun Jan 04 19:03:09 2009 +0000
@@ -1006,10 +1006,16 @@
 				 (not (last-nonminibuffer-frame)))
 			     0)
 			(last-nonminibuffer-frame))))
-	(and (setq window-to-use (get-buffer-window buffer frames))
-	     (or can-use-selected-window
-		 (not (eq (selected-window) window-to-use)))))
-      ;; If the buffer is already displayed in some window use that.
+	(setq window-to-use
+	      (catch 'found
+		;; Search all visible and iconified frames for a window
+		;; displaying BUFFER.  Return the selected window only
+		;; if can-use-selected-window says we may do so.
+		(dolist (window (get-buffer-window-list buffer 'nomini 0))
+		  (when (or can-use-selected-window
+			    (not (eq (selected-window) window)))
+		    (throw 'found window))))))
+      ;; The buffer is already displayed in some window; use that.
       (window--display-buffer-1 window-to-use))
      ((and special-display-function
 	   ;; `special-display-p' returns either t or a list of frame