changeset 71650:dcb7e8b2f7b3

* server.el (server-select-display): Don't make the temp frame minibuffer-only, in case it's not a temp frame. (server-process-filter): Don't delete the temp frame if it's the only one we have on that display.
author Chong Yidong <cyd@stupidchicken.com>
date Thu, 06 Jul 2006 22:48:16 +0000
parents 5a4a7b32f980
children 731edb6e5b4f
files lisp/ChangeLog lisp/server.el
diffstat 2 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Jul 06 13:55:49 2006 +0000
+++ b/lisp/ChangeLog	Thu Jul 06 22:48:16 2006 +0000
@@ -1,5 +1,10 @@
 2006-07-06  Chong Yidong  <cyd@stupidchicken.com>
 
+	* server.el (server-select-display): Don't make the temp frame
+	minibuffer-only, in case it's not a temp frame.
+	(server-process-filter): Don't delete the temp frame if it's the
+	only one we have on that display.
+
 	* files.el (find-alternate-file): Doc fix.
 
 2006-07-05  Richard Stallman  <rms@gnu.org>
--- a/lisp/server.el	Thu Jul 06 13:55:49 2006 +0000
+++ b/lisp/server.el	Thu Jul 06 22:48:16 2006 +0000
@@ -203,18 +203,14 @@
     (dolist (frame (frame-list))
       (when (equal (frame-parameter frame 'display) display)
 	(select-frame frame)))
-    ;; If there's no frame on that display yet, create a dummy one
-    ;; and select it.
+    ;; If there's no frame on that display yet, create and select one.
     (unless (equal (frame-parameter (selected-frame) 'display) display)
       (select-frame
        (make-frame-on-display
 	display
-	;; This frame is only there in place of an actual "current display"
-	;; setting, so we want it to be as unobtrusive as possible.  That's
-	;; what the invisibility is for.  The minibuffer setting is so that
-	;; we don't end up displaying a buffer in it (which noone would
-	;; notice).
-	'((visibility . nil) (minibuffer . only)))))))
+	;; This frame may be deleted later (see server-process-filter)
+	;; so we want it to be as unobtrusive as possible.
+	'((visibility . nil)))))))
 
 (defun server-unquote-arg (arg)
   (replace-regexp-in-string
@@ -383,8 +379,14 @@
 	  (unless nowait
 	    (message "%s" (substitute-command-keys
 		      "When done with a buffer, type \\[server-edit]")))))
-      ;; Avoid preserving the connection after the last real frame is deleted.
-      (if tmp-frame (delete-frame tmp-frame))))
+      ;; If the temporary frame is still the selected frame, make it
+      ;; real.  If not (which can happen if the user's customizations
+      ;; call pop-to-buffer etc.), delete it to avoid preserving the
+      ;; connection after the last real frame is deleted.
+      (if tmp-frame
+	  (if (eq (selected-frame) tmp-frame)
+	      (set-frame-parameter tmp-frame 'visibility t)
+	    (delete-frame tmp-frame)))))
   ;; Save for later any partial line that remains.
   (when (> (length string) 0)
     (process-put proc 'previous-string string)))