1 @@ -4503,29 +4508,45 @@
3 call1 (Qframe_update_face_colors, frame);
5 - lface = lface_from_face_name (f, Qdefault, 1);
7 + lface = lface_from_face_name (f, face, 1);
8 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
9 ? new_value : Qunspecified);
10 realize_basic_faces (f);
12 - if (EQ (param, Qborder_color))
13 + else if (EQ (param, Qborder_color))
15 - lface = lface_from_face_name (f, Qborder, 1);
17 + lface = lface_from_face_name (f, face, 1);
18 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
19 ? new_value : Qunspecified);
21 else if (EQ (param, Qcursor_color))
23 - lface = lface_from_face_name (f, Qcursor, 1);
25 + lface = lface_from_face_name (f, face, 1);
26 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
27 ? new_value : Qunspecified);
29 else if (EQ (param, Qmouse_color))
31 - lface = lface_from_face_name (f, Qmouse, 1);
33 + lface = lface_from_face_name (f, face, 1);
34 LFACE_BACKGROUND (lface) = (STRINGP (new_value)
35 ? new_value : Qunspecified);
38 + /* Changing a named face means that all realized faces depending on
39 + that face are invalid. Since we cannot tell which realized faces
40 + depend on the face, make sure they are all removed. This is done
41 + by incrementing face_change_count. The next call to
42 + init_iterator will then free realized faces. */
44 + && NILP (Fget (face, Qface_no_inherit)))
46 + ++face_change_count;
47 + ++windows_or_buffers_changed;