aboutsummaryrefslogtreecommitdiffhomepage
path: root/generic/pg-response.el
diff options
context:
space:
mode:
Diffstat (limited to 'generic/pg-response.el')
-rw-r--r--generic/pg-response.el17
1 files changed, 14 insertions, 3 deletions
diff --git a/generic/pg-response.el b/generic/pg-response.el
index 1c005998..e278cec3 100644
--- a/generic/pg-response.el
+++ b/generic/pg-response.el
@@ -184,6 +184,18 @@ Following POLICY, which can be one of 'smart, 'horizontal,
proof-script-buffer proof-goals-buffer proof-response-buffer
policy))))
+
+(defun proof-delete-all-associated-windows ()
+ "Delete windows (and maybe frames) showing associated buffers.
+Delete a frame if it displays only associated buffers, unless it
+is the only frame (try to bury buffers then)."
+ (mapc (lambda (w)
+ ;; try to delete window, or frame, or only bury buffer
+ (if (not (frame-root-window-p w)) (delete-window w)
+ (if (< 1 (length (frame-list))) (delete-frame (window-frame w))
+ (window--display-buffer (other-buffer) w 'window))))
+ (proof-find-all-associated-windows)))
+
(defvar pg-frame-configuration nil
"Variable storing last used frame configuration.")
@@ -250,7 +262,7 @@ dragging the separating bars.
(proof-three-window-enable ; single frame
;; If we are coming from multiple frame mode, delete associated
;; frames (and only them).
- (proof-delete-other-frames)
+ (proof-delete-all-associated-windows)
(set-window-dedicated-p (selected-window) nil)
(proof-display-three-b proof-three-window-mode-policy))
;; Two-of-three window mode.
@@ -258,9 +270,8 @@ dragging the separating bars.
(t
;; If we are coming from multiple frame mode, delete associated
;; frames (and only them).
- (proof-delete-other-frames)
+ (proof-delete-all-associated-windows)
(set-window-dedicated-p (selected-window) nil)
- (delete-other-windows)
(if (buffer-live-p proof-response-buffer)
(proof-display-and-keep-buffer proof-response-buffer nil 'force))))
(pg-hint (pg-response-buffers-hint)))