# HG changeset patch # User Eli Zaretskii # Date 970945056 0 # Node ID f93728883f641859eee700bfae4dd00b0f2b1487 # Parent e3c97d8f7a7ef8b5821ba800ece77b33ff2a882e (Fframe_parameter): For non-windowed frames, if f->param_alist says foreground or background color is unspecified, call tty_color_name to return the color name computed from the frame's current colors. diff -r e3c97d8f7a7e -r f93728883f64 src/frame.c --- a/src/frame.c Sat Oct 07 18:49:14 2000 +0000 +++ b/src/frame.c Sat Oct 07 18:57:36 2000 +0000 @@ -2133,7 +2133,29 @@ { value = Fassq (parameter, f->param_alist); if (CONSP (value)) - value = XCDR (value); + { + extern char unspecified_fg[], unspecified_bg[]; + extern Lisp_Object Qbackground_color, Qforeground_color; + + value = XCDR (value); + /* Fframe_parameters puts the actual fg/bg color names, + even if f->param_alist says otherwise. This is + important when param_alist's notion of colors is + "unspecified". We need to do the same here. */ + if (STRINGP (value) && !FRAME_WINDOW_P (f)) + { + if (EQ (parameter, Qbackground_color) + && strncmp (XSTRING (value)->data, + unspecified_bg, + XSTRING (value)->size) == 0) + value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f)); + else if (EQ (parameter, Qforeground_color) + && strncmp (XSTRING (value)->data, + unspecified_fg, + XSTRING (value)->size) == 0) + value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f)); + } + } else if (EQ (parameter, Qdisplay_type) || EQ (parameter, Qbackground_mode)) /* Avoid consing in frequent cases. */