Commit 87f1940e authored by Eli Zaretskii's avatar Eli Zaretskii

(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.
parent 8bae7480
...@@ -559,6 +559,7 @@ Note that changing the size of one terminal frame automatically affects all.") ...@@ -559,6 +559,7 @@ Note that changing the size of one terminal frame automatically affects all.")
{ {
struct frame *f; struct frame *f;
Lisp_Object frame; Lisp_Object frame;
Lisp_Object tem;
#ifdef MSDOS #ifdef MSDOS
if (selected_frame->output_method != output_msdos_raw) if (selected_frame->output_method != output_msdos_raw)
...@@ -576,7 +577,15 @@ Note that changing the size of one terminal frame automatically affects all.") ...@@ -576,7 +577,15 @@ Note that changing the size of one terminal frame automatically affects all.")
XSETFRAME (frame, f); XSETFRAME (frame, f);
Fmodify_frame_parameters (frame, Vdefault_frame_alist); Fmodify_frame_parameters (frame, Vdefault_frame_alist);
Fmodify_frame_parameters (frame, parms); 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; return frame;
} }
...@@ -1952,11 +1961,15 @@ If FRAME is omitted, return information on the currently selected frame.") ...@@ -1952,11 +1961,15 @@ If FRAME is omitted, return information on the currently selected frame.")
{ {
int fg = FRAME_FOREGROUND_PIXEL (f); int fg = FRAME_FOREGROUND_PIXEL (f);
int bg = FRAME_BACKGROUND_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"), 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"), 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")); store_in_alist (&alist, intern ("font"), build_string ("ms-dos"));
#endif #endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment