Mercurial > emacs
changeset 25209:eea9647c8246
(Fframe_parameters): Swap foreground and background
colors returned in frame parameters if the frame has reverse in
its parameter alist.
(Fmake_terminal_frame): Make a unique copy of face_alist for
each frame.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Tue, 10 Aug 1999 10:13:05 +0000 |
parents | 76f5f50e7742 |
children | b145fd152286 |
files | src/frame.c |
diffstat | 1 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/frame.c Tue Aug 10 09:51:17 1999 +0000 +++ b/src/frame.c Tue Aug 10 10:13:05 1999 +0000 @@ -559,6 +559,7 @@ { struct frame *f; Lisp_Object frame; + Lisp_Object tem; #ifdef MSDOS if (selected_frame->output_method != output_msdos_raw) @@ -576,7 +577,15 @@ XSETFRAME (frame, f); Fmodify_frame_parameters (frame, Vdefault_frame_alist); Fmodify_frame_parameters (frame, parms); - f->face_alist = selected_frame->face_alist; + + /* Make the frame face alist be frame-specific, so that each + frame could change its face definitions independently. */ + f->face_alist = Fcopy_alist (selected_frame->face_alist); + /* Simple Fcopy_alist isn't enough, because we need the contents of + the vectors which are the CDRs of associations in face_alist to + be copied as well. */ + for (tem = f->face_alist; CONSP (tem); tem = XCDR (tem)) + XCDR (XCAR (tem)) = Fcopy_sequence (XCDR (XCAR (tem))); return frame; } @@ -1952,11 +1961,15 @@ { int fg = FRAME_FOREGROUND_PIXEL (f); int bg = FRAME_BACKGROUND_PIXEL (f); + Lisp_Object qreverse = intern ("reverse"); + int rv = + !NILP (Fassq (qreverse, alist)) + || !NILP (Fassq (qreverse, Vdefault_frame_alist)); store_in_alist (&alist, intern ("foreground-color"), - build_string (msdos_stdcolor_name (fg))); + build_string (msdos_stdcolor_name (rv ? bg : fg))); store_in_alist (&alist, intern ("background-color"), - build_string (msdos_stdcolor_name (bg))); + build_string (msdos_stdcolor_name (rv ? fg : bg))); } store_in_alist (&alist, intern ("font"), build_string ("ms-dos")); #endif