aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1994-09-22 07:26:46 +0000
committerRichard M. Stallman1994-09-22 07:26:46 +0000
commite7cc6aa5c632744c94c1bccad8582ce596bb5b3e (patch)
tree1419b0fbec9432ca82c00cce15beefa6f99f0dca
parent8be055fdee6b20d22e61ff68665406c1e81c1b5d (diff)
downloademacs-e7cc6aa5c632744c94c1bccad8582ce596bb5b3e.tar.gz
emacs-e7cc6aa5c632744c94c1bccad8582ce596bb5b3e.zip
(x-create-frame-with-faces): Delete the frame if get error.
-rw-r--r--lisp/faces.el76
1 files changed, 41 insertions, 35 deletions
diff --git a/lisp/faces.el b/lisp/faces.el
index a058292ab39..7beb5c2562f 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -816,42 +816,48 @@ selected frame."
816 (let* ((visibility-spec (assq 'visibility parameters)) 816 (let* ((visibility-spec (assq 'visibility parameters))
817 (frame (x-create-frame (cons '(visibility . nil) parameters))) 817 (frame (x-create-frame (cons '(visibility . nil) parameters)))
818 (faces (copy-alist global-face-data)) 818 (faces (copy-alist global-face-data))
819 success
819 (rest faces)) 820 (rest faces))
820 (set-frame-face-alist frame faces) 821 (unwind-protect
821 822 (progn
822 (if (cdr (or (assq 'reverse parameters) 823 (set-frame-face-alist frame faces)
823 (assq 'reverse default-frame-alist) 824
824 (let ((resource (x-get-resource "reverseVideo" 825 (if (cdr (or (assq 'reverse parameters)
825 "ReverseVideo"))) 826 (assq 'reverse default-frame-alist)
826 (if resource 827 (let ((resource (x-get-resource "reverseVideo"
827 (cons nil (member (downcase resource) 828 "ReverseVideo")))
828 '("on" "true"))))))) 829 (if resource
829 (let ((params (frame-parameters frame))) 830 (cons nil (member (downcase resource)
830 (modify-frame-parameters 831 '("on" "true")))))))
831 frame 832 (let ((params (frame-parameters frame)))
832 (list (cons 'foreground-color (cdr (assq 'background-color params))) 833 (modify-frame-parameters
833 (cons 'background-color (cdr (assq 'foreground-color params))) 834 frame
834 (cons 'mouse-color (cdr (assq 'background-color params))) 835 (list (cons 'foreground-color (cdr (assq 'background-color params)))
835 (cons 'border-color (cdr (assq 'background-color params))))) 836 (cons 'background-color (cdr (assq 'foreground-color params)))
836 (modify-frame-parameters 837 (cons 'mouse-color (cdr (assq 'background-color params)))
837 frame 838 (cons 'border-color (cdr (assq 'background-color params)))))
838 (list (cons 'cursor-color (cdr (assq 'background-color params))))))) 839 (modify-frame-parameters
839 840 frame
840 ;; Copy the vectors that represent the faces. 841 (list (cons 'cursor-color (cdr (assq 'background-color params)))))))
841 ;; Also fill them in from X resources. 842
842 (while rest 843 ;; Copy the vectors that represent the faces.
843 (let ((global (cdr (car rest)))) 844 ;; Also fill them in from X resources.
844 (setcdr (car rest) (vector 'face 845 (while rest
845 (face-name (cdr (car rest))) 846 (let ((global (cdr (car rest))))
846 (face-id (cdr (car rest))) 847 (setcdr (car rest) (vector 'face
847 nil nil nil nil nil)) 848 (face-name (cdr (car rest)))
848 (face-fill-in (car (car rest)) global frame)) 849 (face-id (cdr (car rest)))
849 (make-face-x-resource-internal (cdr (car rest)) frame t) 850 nil nil nil nil nil))
850 (setq rest (cdr rest))) 851 (face-fill-in (car (car rest)) global frame))
851 (if (null visibility-spec) 852 (make-face-x-resource-internal (cdr (car rest)) frame t)
852 (make-frame-visible frame) 853 (setq rest (cdr rest)))
853 (modify-frame-parameters frame (list visibility-spec))) 854 (if (null visibility-spec)
854 frame))) 855 (make-frame-visible frame)
856 (modify-frame-parameters frame (list visibility-spec)))
857 (setq success t)
858 frame)
859 (or success
860 (delete-frame frame))))))
855 861
856;; Update a frame's faces when we change its default font. 862;; Update a frame's faces when we change its default font.
857(defun frame-update-faces (frame) 863(defun frame-update-faces (frame)