diff src/faces.c @ 288:e11d67e05968 r21-0b42

Import from CVS: tag r21-0b42
author cvs
date Mon, 13 Aug 2007 10:35:54 +0200
parents 558f606b08ae
children c9fe270a4101
line wrap: on
line diff
--- a/src/faces.c	Mon Aug 13 10:35:07 2007 +0200
+++ b/src/faces.c	Mon Aug 13 10:35:54 2007 +0200
@@ -54,13 +54,13 @@
 /* These faces are used directly internally.  We use these variables
    to be able to reference them directly and save the overhead of
    calling Ffind_face. */
-Lisp_Object Vdefault_face, Vmodeline_face;
+Lisp_Object Vdefault_face, Vmodeline_face, V3d_object_face;
 Lisp_Object Vleft_margin_face, Vright_margin_face, Vtext_cursor_face;
 Lisp_Object Vpointer_face;
 Lisp_Object Vvertical_divider_face;
 
 /* Qdefault, Qhighlight defined in general.c */
-Lisp_Object Qmodeline, Qleft_margin, Qright_margin, Qtext_cursor;
+Lisp_Object Qmodeline, Q3d_object, Qleft_margin, Qright_margin, Qtext_cursor;
 Lisp_Object Qvertical_divider;
 
 /* In the old implementation Vface_list was a list of the face names,
@@ -1752,6 +1752,7 @@
 {
   /* Qdefault defined in general.c */
   defsymbol (&Qmodeline, "modeline");
+  defsymbol (&Q3d_object, "3d-object");
   defsymbol (&Qleft_margin, "left-margin");
   defsymbol (&Qright_margin, "right-margin");
   defsymbol (&Qtext_cursor, "text-cursor");
@@ -1804,6 +1805,8 @@
 
   staticpro (&Vdefault_face);
   Vdefault_face = Qnil;
+  staticpro (&V3d_object_face);
+  V3d_object_face = Qnil;
   staticpro (&Vmodeline_face);
   Vmodeline_face = Qnil;
 
@@ -1934,11 +1937,25 @@
   set_specifier_fallback (Fget (Vdefault_face, Qreverse, Qnil),
 			 list1 (Fcons (Qnil, Qnil)));
 
+  /* mustn't inherit bg pixmaps from the default face */
+  V3d_object_face = Fmake_face (Q3d_object, build_string ("3d object face"),
+				Qnil);
+
   /* Now create the other faces that redisplay needs to refer to
      directly.  We could create them in Lisp but it's simpler this
      way since we need to get them anyway. */
   Vmodeline_face = Fmake_face (Qmodeline, build_string ("modeline face"),
 			       Qnil);
+
+  /* modeline-face should not inherit colors from the default face. */
+  set_specifier_fallback (Fget (Vmodeline_face, Qforeground, Qunbound),
+			  Fget (V3d_object_face, Qforeground, Qunbound));
+  set_specifier_fallback (Fget (Vmodeline_face, Qbackground, Qunbound),
+			  Fget (V3d_object_face, Qbackground, Qunbound));
+  set_specifier_fallback (Fget (Vmodeline_face, Qbackground_pixmap,
+				Qnil),
+			  Fget (V3d_object_face, Qbackground_pixmap, Qunbound));
+
   Vvertical_divider_face = Fmake_face (Qvertical_divider,
 				       build_string ("vertical divider face"),
 				       Qnil);
@@ -1946,12 +1963,12 @@
      Perhaps there must be a 3d-object-face to supply default foreground,
      background and pixmap. */
   set_specifier_fallback (Fget (Vvertical_divider_face, Qforeground, Qunbound),
-			  Fget (Vmodeline_face, Qforeground, Qunbound));
+			  Fget (V3d_object_face, Qforeground, Qunbound));
   set_specifier_fallback (Fget (Vvertical_divider_face, Qbackground, Qunbound),
-			  Fget (Vmodeline_face, Qbackground, Qunbound));
+			  Fget (V3d_object_face, Qbackground, Qunbound));
   set_specifier_fallback (Fget (Vvertical_divider_face, Qbackground_pixmap,
 				Qunbound),
-			  Fget (Vdefault_face, Qbackground_pixmap, Qunbound));
+			  Fget (V3d_object_face, Qbackground_pixmap, Qunbound));
 
   Vleft_margin_face = Fmake_face (Qleft_margin,
 				  build_string ("left margin face"),