emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs-25 d82f24b: Fix redisplay after a large insertion


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs-25 d82f24b: Fix redisplay after a large insertion
Date: Fri, 12 Feb 2016 19:39:33 +0000

branch: emacs-25
commit d82f24ba8530eb8de04a319cc80742a0a953040e
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Fix redisplay after a large insertion
    
    * src/xdisp.c (redisplay_internal): Don't accept the results of
    "optimization 3" if the cursor ends up in a partially visible
    glyph row.  (Bug22637)
---
 src/xdisp.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index 8f1e98d..840699d 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -825,6 +825,7 @@ static Lisp_Object redisplay_window_1 (Lisp_Object);
 static bool set_cursor_from_row (struct window *, struct glyph_row *,
                                 struct glyph_matrix *, ptrdiff_t, ptrdiff_t,
                                 int, int);
+static bool cursor_row_fully_visible_p (struct window *, bool, bool);
 static bool update_menu_bar (struct frame *, bool, bool);
 static bool try_window_reusing_current_matrix (struct window *);
 static int try_window_id (struct window *);
@@ -13881,11 +13882,16 @@ redisplay_internal (void)
              eassert (this_line_vpos == it.vpos);
              eassert (this_line_y == it.current_y);
              set_cursor_from_row (w, row, w->current_matrix, 0, 0, 0, 0);
+             if (cursor_row_fully_visible_p (w, false, true))
+               {
 #ifdef GLYPH_DEBUG
-             *w->desired_matrix->method = 0;
-             debug_method_add (w, "optimization 3");
+                 *w->desired_matrix->method = 0;
+                 debug_method_add (w, "optimization 3");
 #endif
-             goto update;
+                 goto update;
+               }
+             else
+               goto cancel;
            }
          else
            goto cancel;



reply via email to

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