diff options
author | Gerd Moellmann <[email protected]> | 2001-04-17 12:02:53 +0000 |
---|---|---|
committer | Gerd Moellmann <[email protected]> | 2001-04-17 12:02:53 +0000 |
commit | a2125918a0fb047f247a51d9a46412ff24e2eafb (patch) | |
tree | efa58596e9b73d2004d6b53f88cf64dc02f3d69e /lisp/frame.el | |
parent | 8f9ab4032faae52545128d5f9ac3992f6fad9af6 (diff) |
(delete-other-frames): Handle minibuffer-only frames.
Diffstat (limited to 'lisp/frame.el')
-rw-r--r-- | lisp/frame.el | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lisp/frame.el b/lisp/frame.el index 299cfa52b0..3b3bf3eaae 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1043,11 +1043,23 @@ should use `set-frame-height' instead." (defun delete-other-frames (&optional frame) "Delete all frames except FRAME. -FRAME nil or omitted means delete all frames except the selected frame." +If FRAME uses another frame's minibuffer, the minibuffer frame is +left untouched. FRAME nil or omitted means use the selected frame." (interactive) (unless frame (setq frame (selected-frame))) - (mapcar 'delete-frame (delq frame (frame-list)))) + (let* ((mini-frame (window-frame (minibuffer-window frame))) + (frames (delq mini-frame (delq frame (frame-list))))) + ;; Delete mon-minibuffer-only frames first, because `delete-frame' + ;; signals an error when trying to delete a mini-frame that's + ;; still in use by another frame. + (dolist (frame frames) + (unless (eq (frame-parameter frame 'minibuffer) 'only) + (delete-frame frame))) + ;; Delete minibuffer-only frames. + (dolist (frame frames) + (when (eq (frame-parameter frame 'minibuffer) 'only) + (delete-frame frame))))) (make-obsolete 'screen-height 'frame-height) ;before 19.15 |