]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix redrawing of mode lines when exposed (Bug#19721)
authorEli Zaretskii <eliz@gnu.org>
Mon, 2 Feb 2015 16:15:13 +0000 (18:15 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 2 Feb 2015 16:15:13 +0000 (18:15 +0200)
 src/dispnew.c (adjust_glyph_matrix): Set the update_mode_line flag
 of the window whose current glyph matrix was resized, which
 disables the mode-line row as side effect.
 src/xdisp.c (redisplay_window): Don't avoid redisplay of a window
 whose update_mode_line flag is set.

src/ChangeLog
src/dispnew.c
src/xdisp.c

index 829eb25f4d994b881ad39ff2adfc0429883006dc..c8ea8b586eda768991a8397e9c747fa44c5949c3 100644 (file)
@@ -1,3 +1,12 @@
+2015-02-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * dispnew.c (adjust_glyph_matrix): Set the update_mode_line flag
+       of the window whose current glyph matrix was resized, which
+       disables the mode-line row as side effect.
+
+       * xdisp.c (redisplay_window): Don't avoid redisplay of a window
+       whose update_mode_line flag is set.  (Bug#19721)
+
 2015-01-30  Eli Zaretskii  <eliz@gnu.org>
 
        * dispextern.h (FACE_FOR_CHAR): Fix the commentary.
index f73ea58b7f37c31ffdf17df751d294b306fd70e7..6517c9b5d1945cc424b5da6d69a41b3e004f65ac 100644 (file)
@@ -570,6 +570,12 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
              for (i = 0; i < matrix->nrows; ++i)
                matrix->rows[i].enabled_p = false;
            }
+         /* We've disabled the mode-line row, so force redrawing of
+            the mode line, if any, since otherwise it will remain
+            disabled in the current matrix, and expose events won't
+            redraw it.  */
+         if (WINDOW_WANTS_MODELINE_P (w))
+           w->update_mode_line = 1;
        }
       else if (matrix == w->desired_matrix)
        {
index b1125d324c2c5cc6c98b43a1eb3f749da012283d..2ebf06d5c3425a43d70dd2d12050a731ec9e72c5 100644 (file)
@@ -15964,6 +15964,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
   if (!just_this_one_p
       && REDISPLAY_SOME_P ()
       && !w->redisplay
+      && !w->update_mode_line
       && !f->redisplay
       && !buffer->text->redisplay
       && BUF_PT (buffer) == w->last_point)