Mercurial > vim
diff src/drawscreen.c @ 29812:68ef14b21d01 v9.0.0245
patch 9.0.0245: mechanism to prevent recursive screen updating is incomplete
Commit: https://github.com/vim/vim/commit/471c0fa3eed4f6207d1cb7636970547bfd2eee26
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 22 15:19:16 2022 +0100
patch 9.0.0245: mechanism to prevent recursive screen updating is incomplete
Problem: Mechanism to prevent recursive screen updating is incomplete.
Solution: Add "redraw_not_allowed" and set it in build_stl_str_hl().
(issue #10952)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 22 Aug 2022 16:30:03 +0200 |
parents | 89e1d67814a9 |
children | 6c7eddcce52c |
line wrap: on
line diff
--- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -3154,7 +3154,7 @@ redraw_win_later( win_T *wp, int type) { - if (!exiting && wp->w_redr_type < type) + if (!exiting && !redraw_not_allowed && wp->w_redr_type < type) { wp->w_redr_type = type; if (type >= UPD_NOT_VALID) @@ -3186,7 +3186,17 @@ redraw_all_later(int type) FOR_ALL_WINDOWS(wp) redraw_win_later(wp, type); // This may be needed when switching tabs. - if (must_redraw < type) + set_must_redraw(type); +} + +/* + * Set "must_redraw" to "type" unless it already has a higher value + * or it is currently not allowed. + */ + void +set_must_redraw(int type) +{ + if (!redraw_not_allowed && must_redraw < type) must_redraw = type; }