]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #16192 with highlight of display margins when region is active
authorEli Zaretskii <eliz@gnu.org>
Thu, 19 Dec 2013 19:06:53 +0000 (21:06 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 19 Dec 2013 19:06:53 +0000 (21:06 +0200)
 src/xdisp.c (extend_face_to_end_of_line): Use default face, not the
 current text face, for extending the face of the display margins.

src/ChangeLog
src/xdisp.c

index 1a735dfc5c0c7498de66990d81f5dd8e9a5842f9..74ae25327ab133784c537381249ed304089ea04a 100644 (file)
@@ -1,5 +1,9 @@
 2013-12-19  Eli Zaretskii  <eliz@gnu.org>
 
+       * xdisp.c (extend_face_to_end_of_line): Use default face, not the
+       current text face, for extending the face of the display margins.
+       (Bug#16192)
+
        * casefiddle.c (Fupcase_word, Fdowncase_word, Fcapitalize_word):
        Doc fix.  (Bug#16190)
 
index 0d3f473b6f1a45ca684f7d73ef40dcf862c75fb4..e336ea6c333f6eb014d79c401e6f57cb5224e19b 100644 (file)
@@ -18876,14 +18876,16 @@ extend_face_to_end_of_line (struct it *it)
              && it->glyph_row->used[LEFT_MARGIN_AREA] == 0)
            {
              it->glyph_row->glyphs[LEFT_MARGIN_AREA][0] = space_glyph;
-             it->glyph_row->glyphs[LEFT_MARGIN_AREA][0].face_id = face->id;
+             it->glyph_row->glyphs[LEFT_MARGIN_AREA][0].face_id =
+               default_face->id;
              it->glyph_row->used[LEFT_MARGIN_AREA] = 1;
            }
          if (WINDOW_RIGHT_MARGIN_WIDTH (it->w) > 0
              && it->glyph_row->used[RIGHT_MARGIN_AREA] == 0)
            {
              it->glyph_row->glyphs[RIGHT_MARGIN_AREA][0] = space_glyph;
-             it->glyph_row->glyphs[RIGHT_MARGIN_AREA][0].face_id = face->id;
+             it->glyph_row->glyphs[RIGHT_MARGIN_AREA][0].face_id =
+               default_face->id;
              it->glyph_row->used[RIGHT_MARGIN_AREA] = 1;
            }
        }
@@ -18952,15 +18954,8 @@ extend_face_to_end_of_line (struct it *it)
       it->object = make_number (0);
       it->c = it->char_to_display = ' ';
       it->len = 1;
-      /* The last row's blank glyphs should get the default face, to
-        avoid painting the rest of the window with the region face,
-        if the region ends at ZV.  */
-      if (it->glyph_row->ends_at_zv_p)
-       it->face_id = default_face->id;
-      else
-       it->face_id = face->id;
 
-      face = FACE_FROM_ID (f, it->face_id);
+      face = FACE_FROM_ID (f, default_face->id);
       if (WINDOW_LEFT_MARGIN_WIDTH (it->w) > 0
          && (it->glyph_row->used[LEFT_MARGIN_AREA]
              < WINDOW_LEFT_MARGIN_WIDTH (it->w))
@@ -18974,6 +18969,7 @@ extend_face_to_end_of_line (struct it *it)
            it->current_x += g->pixel_width;
 
          it->area = LEFT_MARGIN_AREA;
+         it->face_id = default_face->id;
          while (it->glyph_row->used[LEFT_MARGIN_AREA]
                 < WINDOW_LEFT_MARGIN_WIDTH (it->w))
            {
@@ -18987,11 +18983,20 @@ extend_face_to_end_of_line (struct it *it)
          it->area = TEXT_AREA;
        }
 
+      /* The last row's blank glyphs should get the default face, to
+        avoid painting the rest of the window with the region face,
+        if the region ends at ZV.  */
+      if (it->glyph_row->ends_at_zv_p)
+       it->face_id = default_face->id;
+      else
+       it->face_id = face->id;
+      face = FACE_FROM_ID (f, it->face_id);
       PRODUCE_GLYPHS (it);
 
       while (it->current_x <= it->last_visible_x)
        PRODUCE_GLYPHS (it);
 
+      face = FACE_FROM_ID (f, default_face->id);
       if (WINDOW_RIGHT_MARGIN_WIDTH (it->w) > 0
          && (it->glyph_row->used[RIGHT_MARGIN_AREA]
              < WINDOW_RIGHT_MARGIN_WIDTH (it->w))
@@ -19005,6 +19010,7 @@ extend_face_to_end_of_line (struct it *it)
            it->current_x += g->pixel_width;
 
          it->area = RIGHT_MARGIN_AREA;
+         it->face_id = default_face->id;
          while (it->glyph_row->used[RIGHT_MARGIN_AREA]
                 < WINDOW_RIGHT_MARGIN_WIDTH (it->w))
            {