Mercurial > emacs
comparison src/frame.c @ 32545:288723d38c06
(Fframe_parameters): If a tty's frame's param_alist says
the colors are unspecified and reversed, reverse fore- and back-
ground in the returned value.
(Fframe_parameter): Ditto.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Mon, 16 Oct 2000 19:15:09 +0000 |
parents | f93728883f64 |
children | 923b8d6d8277 |
comparison
equal
deleted
inserted
replaced
32544:244478dd087e | 32545:288723d38c06 |
---|---|
2059 | 2059 |
2060 if (!FRAME_WINDOW_P (f)) | 2060 if (!FRAME_WINDOW_P (f)) |
2061 { | 2061 { |
2062 int fg = FRAME_FOREGROUND_PIXEL (f); | 2062 int fg = FRAME_FOREGROUND_PIXEL (f); |
2063 int bg = FRAME_BACKGROUND_PIXEL (f); | 2063 int bg = FRAME_BACKGROUND_PIXEL (f); |
2064 | 2064 Lisp_Object elt; |
2065 store_in_alist (&alist, intern ("foreground-color"), | 2065 |
2066 tty_color_name (f, fg)); | 2066 /* If the frame's parameter alist says the colors are |
2067 store_in_alist (&alist, intern ("background-color"), | 2067 unspecified and reversed, take the frame's background pixel |
2068 tty_color_name (f, bg)); | 2068 for foreground and vice versa. */ |
2069 elt = Fassq (Qforeground_color, alist); | |
2070 if (!NILP (elt) && CONSP (elt) | |
2071 && STRINGP (XCDR (elt)) | |
2072 && strncmp (XSTRING (XCDR (elt))->data, | |
2073 unspecified_bg, | |
2074 XSTRING (XCDR (elt))->size) == 0) | |
2075 store_in_alist (&alist, Qforeground_color, tty_color_name (f, bg)); | |
2076 else | |
2077 store_in_alist (&alist, Qforeground_color, tty_color_name (f, fg)); | |
2078 elt = Fassq (Qbackground_color, alist); | |
2079 if (!NILP (elt) && CONSP (elt) | |
2080 && STRINGP (XCDR (elt)) | |
2081 && strncmp (XSTRING (XCDR (elt))->data, | |
2082 unspecified_fg, | |
2083 XSTRING (XCDR (elt))->size) == 0) | |
2084 store_in_alist (&alist, Qbackground_color, tty_color_name (f, fg)); | |
2085 else | |
2086 store_in_alist (&alist, Qbackground_color, tty_color_name (f, bg)); | |
2069 store_in_alist (&alist, intern ("font"), | 2087 store_in_alist (&alist, intern ("font"), |
2070 build_string (FRAME_MSDOS_P (f) | 2088 build_string (FRAME_MSDOS_P (f) |
2071 ? "ms-dos" | 2089 ? "ms-dos" |
2072 : FRAME_W32_P (f) ? "w32term" : "tty")); | 2090 : FRAME_W32_P (f) ? "w32term" : "tty")); |
2073 } | 2091 } |
2132 else | 2150 else |
2133 { | 2151 { |
2134 value = Fassq (parameter, f->param_alist); | 2152 value = Fassq (parameter, f->param_alist); |
2135 if (CONSP (value)) | 2153 if (CONSP (value)) |
2136 { | 2154 { |
2137 extern char unspecified_fg[], unspecified_bg[]; | |
2138 extern Lisp_Object Qbackground_color, Qforeground_color; | |
2139 | |
2140 value = XCDR (value); | 2155 value = XCDR (value); |
2141 /* Fframe_parameters puts the actual fg/bg color names, | 2156 /* Fframe_parameters puts the actual fg/bg color names, |
2142 even if f->param_alist says otherwise. This is | 2157 even if f->param_alist says otherwise. This is |
2143 important when param_alist's notion of colors is | 2158 important when param_alist's notion of colors is |
2144 "unspecified". We need to do the same here. */ | 2159 "unspecified". We need to do the same here. */ |
2145 if (STRINGP (value) && !FRAME_WINDOW_P (f)) | 2160 if (STRINGP (value) && !FRAME_WINDOW_P (f)) |
2146 { | 2161 { |
2147 if (EQ (parameter, Qbackground_color) | 2162 char *color_name; |
2148 && strncmp (XSTRING (value)->data, | 2163 EMACS_INT csz; |
2149 unspecified_bg, | 2164 |
2150 XSTRING (value)->size) == 0) | 2165 if (EQ (parameter, Qbackground_color)) |
2151 value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f)); | 2166 { |
2152 else if (EQ (parameter, Qforeground_color) | 2167 color_name = XSTRING (value)->data; |
2153 && strncmp (XSTRING (value)->data, | 2168 csz = XSTRING (value)->size; |
2154 unspecified_fg, | 2169 if (strncmp (color_name, unspecified_bg, csz) == 0) |
2155 XSTRING (value)->size) == 0) | 2170 value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f)); |
2156 value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f)); | 2171 else if (strncmp (color_name, unspecified_fg, csz) == 0) |
2172 value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f)); | |
2173 } | |
2174 else if (EQ (parameter, Qforeground_color)) | |
2175 { | |
2176 color_name = XSTRING (value)->data; | |
2177 csz = XSTRING (value)->size; | |
2178 if (strncmp (color_name, unspecified_fg, csz) == 0) | |
2179 value = tty_color_name (f, FRAME_FOREGROUND_PIXEL (f)); | |
2180 else if (strncmp (color_name, unspecified_bg, csz) == 0) | |
2181 value = tty_color_name (f, FRAME_BACKGROUND_PIXEL (f)); | |
2182 } | |
2157 } | 2183 } |
2158 } | 2184 } |
2159 else if (EQ (parameter, Qdisplay_type) | 2185 else if (EQ (parameter, Qdisplay_type) |
2160 || EQ (parameter, Qbackground_mode)) | 2186 || EQ (parameter, Qbackground_mode)) |
2161 /* Avoid consing in frequent cases. */ | 2187 /* Avoid consing in frequent cases. */ |