[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 d82f24b: Fix redisplay after a large insertion,
Eli Zaretskii <=