changeset 43270:935816913346

(Finternal_make_lisp_face, Finternal_copy_lisp_face) (update_face_from_frame_parameter): Increment face_change_count and windows_or_buffers_changed to force redisplay using changed faces.
author Richard M. Stallman <rms@gnu.org>
date Wed, 13 Feb 2002 16:21:07 +0000
parents f4b001827b85
children a8329a91e9b5
files src/xfaces.c
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfaces.c	Wed Feb 13 16:15:52 2002 +0000
+++ b/src/xfaces.c	Wed Feb 13 16:21:07 2002 +0000
@@ -3687,6 +3687,14 @@
   else
     lface = global_lface;
 
+  /* Changing a named face means that all realized faces depending on
+     that face are invalid.  Since we cannot tell which realized faces
+     depend on the face, make sure they are all removed.  This is done
+     by incrementing face_change_count.  The next call to
+     init_iterator will then free realized faces.  */
+  ++face_change_count;
+  ++windows_or_buffers_changed;
+
   xassert (LFACEP (lface));
   check_lface (lface);
   return lface;
@@ -3754,6 +3762,14 @@
   bcopy (XVECTOR (lface)->contents, XVECTOR (copy)->contents,
 	 LFACE_VECTOR_SIZE * sizeof (Lisp_Object));
 
+  /* Changing a named face means that all realized faces depending on
+     that face are invalid.  Since we cannot tell which realized faces
+     depend on the face, make sure they are all removed.  This is done
+     by incrementing face_change_count.  The next call to
+     init_iterator will then free realized faces.  */
+  ++face_change_count;
+  ++windows_or_buffers_changed;
+
   return to;
 }
 
@@ -4264,6 +4280,14 @@
   if (NILP (f->face_alist))
     return;
 
+  /* Changing a named face means that all realized faces depending on
+     that face are invalid.  Since we cannot tell which realized faces
+     depend on the face, make sure they are all removed.  This is done
+     by incrementing face_change_count.  The next call to
+     init_iterator will then free realized faces.  */
+  ++face_change_count;
+  ++windows_or_buffers_changed;
+
   if (EQ (param, Qforeground_color))
     {
       lface = lface_from_face_name (f, Qdefault, 1);