emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 19d2ba0: A further fix for locally remapped fringe


From: Eli Zaretskii
Subject: [Emacs-diffs] master 19d2ba0: A further fix for locally remapped fringe face
Date: Sun, 4 Nov 2018 09:02:35 -0500 (EST)

branch: master
commit 19d2ba00596b8ee31cff046b2387580b016fa4c5
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    A further fix for locally remapped fringe face
    
    * src/xdisp.c (expose_window): Temporarily switch to the
    window's buffer, in case the fringe face was remapped locally
    in that buffer.  (Bug#33244)
---
 src/xdisp.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/xdisp.c b/src/xdisp.c
index 7b0ca47..fa7691c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -32252,6 +32252,18 @@ expose_window (struct window *w, XRectangle *fr)
         y0 or y1 is negative (can happen for tall images).  */
       int r_bottom = r.y + r.height;
 
+      /* We must temporarily switch to the window's buffer, in case
+        the fringe face has been remapped in that buffer's
+        face-remapping-alist, so that draw_row_fringe_bitmaps,
+        called from expose_line, will use the right face.  */
+      bool buffer_changed = false;
+      struct buffer *oldbuf = current_buffer;
+      if (!w->pseudo_window_p)
+       {
+         set_buffer_internal_1 (XBUFFER (w->contents));
+         buffer_changed = true;
+       }
+
       /* Update lines intersecting rectangle R.  */
       first_overlapping_row = last_overlapping_row = NULL;
       for (row = w->current_matrix->rows;
@@ -32297,6 +32309,9 @@ expose_window (struct window *w, XRectangle *fr)
            break;
        }
 
+      if (buffer_changed)
+       set_buffer_internal_1 (oldbuf);
+
       /* Display the mode line if there is one.  */
       if (window_wants_mode_line (w)
          && (row = MATRIX_MODE_LINE_ROW (w->current_matrix),



reply via email to

[Prev in Thread] Current Thread [Next in Thread]