diff options
| author | Martin Rudalics | 2008-11-27 13:20:15 +0000 |
|---|---|---|
| committer | Martin Rudalics | 2008-11-27 13:20:15 +0000 |
| commit | a9d451f0346dbbbeb35f56e2581954a67d9faa50 (patch) | |
| tree | 8ba629dc97f0b5da1ec9acbf213110f5778dc9cf | |
| parent | 0956be4f1a9449bc6cce2097464e9027b0bfde6e (diff) | |
| download | emacs-a9d451f0346dbbbeb35f56e2581954a67d9faa50.tar.gz emacs-a9d451f0346dbbbeb35f56e2581954a67d9faa50.zip | |
(display-buffer): Fix handling of not-this-window
argument. (Bug#1415)
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/window.el | 33 |
2 files changed, 30 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 774c3c62606..a9779c010f8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2008-11-27 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * window.el (display-buffer): Fix handling of not-this-window | ||
| 4 | argument. (Bug#1415) | ||
| 5 | |||
| 1 | 2008-11-27 Kenichi Handa <handa@m17n.org> | 6 | 2008-11-27 Kenichi Handa <handa@m17n.org> |
| 2 | 7 | ||
| 3 | * international/characters.el: Set category 'C' to characters | 8 | * international/characters.el: Set category 'C' to characters |
diff --git a/lisp/window.el b/lisp/window.el index 02af7bd6c54..6373185ffaa 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -1038,14 +1038,31 @@ consider all visible or iconified frames." | |||
| 1038 | (window--try-to-split-window | 1038 | (window--try-to-split-window |
| 1039 | (get-lru-window frame-to-use t)))) | 1039 | (get-lru-window frame-to-use t)))) |
| 1040 | (window--display-buffer-2 buffer window-to-use))) | 1040 | (window--display-buffer-2 buffer window-to-use))) |
| 1041 | ((setq window-to-use | 1041 | ((let ((window-to-undedicate |
| 1042 | ;; Reuse an existing window. | 1042 | ;; When NOT-THIS-WINDOW is non-nil, temporarily dedicate |
| 1043 | (or (get-lru-window frame-to-use) | 1043 | ;; the selected window to its buffer, to avoid that some of |
| 1044 | (get-buffer-window buffer 'visible) | 1044 | ;; the `get-' routines below choose it. (Bug#1415) |
| 1045 | (get-largest-window 'visible nil) | 1045 | (and not-this-window (not (window-dedicated-p)) |
| 1046 | (get-buffer-window buffer 0) | 1046 | (set-window-dedicated-p (selected-window) t) |
| 1047 | (get-largest-window 0 nil) | 1047 | (selected-window)))) |
| 1048 | (frame-selected-window (funcall pop-up-frame-function)))) | 1048 | (unwind-protect |
| 1049 | (setq window-to-use | ||
| 1050 | ;; Reuse an existing window. | ||
| 1051 | (or (get-lru-window frame-to-use) | ||
| 1052 | (let ((window (get-buffer-window buffer 'visible))) | ||
| 1053 | (unless (and not-this-window | ||
| 1054 | (eq window (selected-window))) | ||
| 1055 | window)) | ||
| 1056 | (get-largest-window 'visible) | ||
| 1057 | (let ((window (get-buffer-window buffer 0))) | ||
| 1058 | (unless (and not-this-window | ||
| 1059 | (eq window (selected-window))) | ||
| 1060 | window)) | ||
| 1061 | (get-largest-window 0) | ||
| 1062 | (frame-selected-window (funcall pop-up-frame-function)))) | ||
| 1063 | (when (window-live-p window-to-undedicate) | ||
| 1064 | ;; Restore dedicated status of selected window. | ||
| 1065 | (set-window-dedicated-p window-to-undedicate nil)))) | ||
| 1049 | (window--even-window-heights window-to-use) | 1066 | (window--even-window-heights window-to-use) |
| 1050 | (window--display-buffer-2 buffer window-to-use))))) | 1067 | (window--display-buffer-2 buffer window-to-use))))) |
| 1051 | 1068 | ||