xdisp.c (get_next_display_element): Set correct it->face_id for a static composition.
authorKenichi Handa <handa@m17n.org>
Wed, 25 May 2011 01:26:35 +0000 (10:26 +0900)
committerKenichi Handa <handa@m17n.org>
Wed, 25 May 2011 01:26:35 +0000 (10:26 +0900)
src/ChangeLog
src/xdisp.c

index 774bd42..cdc8ed8 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-25  Kenichi Handa  <handa@m17n.org>
+
+       * xdisp.c (get_next_display_element): Set correct it->face_id for
+       a static composition.
+
 2011-05-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * dispnew.c (scrolling_window): Don't exclude the case that the
index 1f4c829..0f21c82 100644 (file)
@@ -5922,9 +5922,21 @@ get_next_display_element (it)
          int pos = (it->s ? -1
                     : STRINGP (it->string) ? IT_STRING_CHARPOS (*it)
                     : IT_CHARPOS (*it));
+         int c;
+
+         if (it->what == IT_CHARACTER)
+           c = it->char_to_display;
+         else
+           {
+             struct composition *cmp = composition_table[it->cmp_it.id];
+             int i;
 
-         it->face_id = FACE_FOR_CHAR (it->f, face, it->char_to_display, pos,
-                                      it->string);
+             c = ' ';
+             for (i = 0; i < cmp->glyph_len; i++)
+               if ((c = COMPOSITION_GLYPH (cmp, i)) != '\t')
+                 break;
+           }
+         it->face_id = FACE_FOR_CHAR (it->f, face, c, pos, it->string);
        }
     }
 #endif