mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
patch 9.0.1571: RedrawingDisabled not used consistently
Problem: RedrawingDisabled not used consistently. Solution: Avoid RedrawingDisabled going negative. Set RedrawingDisabled in win_split_ins(). (closes #11961)
This commit is contained in:
@@ -550,7 +550,8 @@ do_exmode(
|
||||
#ifdef FEAT_GUI
|
||||
--hold_gui_events;
|
||||
#endif
|
||||
--RedrawingDisabled;
|
||||
if (RedrawingDisabled > 0)
|
||||
--RedrawingDisabled;
|
||||
--no_wait_return;
|
||||
update_screen(UPD_CLEAR);
|
||||
need_wait_return = FALSE;
|
||||
@@ -631,7 +632,7 @@ do_cmdline(
|
||||
static int recursive = 0; // recursive depth
|
||||
int msg_didout_before_start = 0;
|
||||
int count = 0; // line number count
|
||||
int did_inc = FALSE; // incremented RedrawingDisabled
|
||||
int did_inc_RedrawingDisabled = FALSE;
|
||||
int retval = OK;
|
||||
#ifdef FEAT_EVAL
|
||||
cstack_T cstack; // conditional stack
|
||||
@@ -977,7 +978,7 @@ do_cmdline(
|
||||
msg_scroll = TRUE; // put messages below each other
|
||||
++no_wait_return; // don't wait for return until finished
|
||||
++RedrawingDisabled;
|
||||
did_inc = TRUE;
|
||||
did_inc_RedrawingDisabled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1336,9 +1337,10 @@ do_cmdline(
|
||||
* hit return before redrawing the screen. With the ":global" command we do
|
||||
* this only once after the command is finished.
|
||||
*/
|
||||
if (did_inc)
|
||||
if (did_inc_RedrawingDisabled)
|
||||
{
|
||||
--RedrawingDisabled;
|
||||
if (RedrawingDisabled > 0)
|
||||
--RedrawingDisabled;
|
||||
--no_wait_return;
|
||||
msg_scroll = FALSE;
|
||||
|
||||
@@ -7170,7 +7172,7 @@ do_exedit(
|
||||
|
||||
if (exmode_was != EXMODE_VIM)
|
||||
settmode(TMODE_RAW);
|
||||
int save_rd = RedrawingDisabled;
|
||||
int save_RedrawingDisabled = RedrawingDisabled;
|
||||
RedrawingDisabled = 0;
|
||||
int save_nwr = no_wait_return;
|
||||
no_wait_return = 0;
|
||||
@@ -7187,7 +7189,7 @@ do_exedit(
|
||||
main_loop(FALSE, TRUE);
|
||||
|
||||
pending_exmode_active = FALSE;
|
||||
RedrawingDisabled = save_rd;
|
||||
RedrawingDisabled = save_RedrawingDisabled;
|
||||
no_wait_return = save_nwr;
|
||||
msg_scroll = save_ms;
|
||||
#ifdef FEAT_GUI
|
||||
@@ -8438,11 +8440,12 @@ ex_redraw(exarg_T *eap)
|
||||
void
|
||||
redraw_cmd(int clear)
|
||||
{
|
||||
int r = RedrawingDisabled;
|
||||
int p = p_lz;
|
||||
|
||||
int save_RedrawingDisabled = RedrawingDisabled;
|
||||
RedrawingDisabled = 0;
|
||||
|
||||
int save_p_lz = p_lz;
|
||||
p_lz = FALSE;
|
||||
|
||||
validate_cursor();
|
||||
update_topline();
|
||||
update_screen(clear ? UPD_CLEAR : VIsual_active ? UPD_INVERTED : 0);
|
||||
@@ -8454,8 +8457,8 @@ redraw_cmd(int clear)
|
||||
# endif
|
||||
resize_console_buf();
|
||||
#endif
|
||||
RedrawingDisabled = r;
|
||||
p_lz = p;
|
||||
RedrawingDisabled = save_RedrawingDisabled;
|
||||
p_lz = save_p_lz;
|
||||
|
||||
// After drawing the statusline screen_attr may still be set.
|
||||
screen_stop_highlight();
|
||||
@@ -8480,9 +8483,6 @@ redraw_cmd(int clear)
|
||||
static void
|
||||
ex_redrawstatus(exarg_T *eap UNUSED)
|
||||
{
|
||||
int r = RedrawingDisabled;
|
||||
int p = p_lz;
|
||||
|
||||
if (eap->forceit)
|
||||
status_redraw_all();
|
||||
else
|
||||
@@ -8490,14 +8490,18 @@ ex_redrawstatus(exarg_T *eap UNUSED)
|
||||
if (msg_scrolled && (State & MODE_CMDLINE))
|
||||
return; // redraw later
|
||||
|
||||
int save_RedrawingDisabled = RedrawingDisabled;
|
||||
RedrawingDisabled = 0;
|
||||
|
||||
int save_p_lz = p_lz;
|
||||
p_lz = FALSE;
|
||||
|
||||
if (State & MODE_CMDLINE)
|
||||
redraw_statuslines();
|
||||
else
|
||||
update_screen(VIsual_active ? UPD_INVERTED : 0);
|
||||
RedrawingDisabled = r;
|
||||
p_lz = p;
|
||||
RedrawingDisabled = save_RedrawingDisabled;
|
||||
p_lz = save_p_lz;
|
||||
out_flush();
|
||||
}
|
||||
|
||||
@@ -8507,16 +8511,16 @@ ex_redrawstatus(exarg_T *eap UNUSED)
|
||||
static void
|
||||
ex_redrawtabline(exarg_T *eap UNUSED)
|
||||
{
|
||||
int r = RedrawingDisabled;
|
||||
int p = p_lz;
|
||||
|
||||
int save_RedrawingDisabled = RedrawingDisabled;
|
||||
RedrawingDisabled = 0;
|
||||
|
||||
int save_p_lz = p_lz;
|
||||
p_lz = FALSE;
|
||||
|
||||
draw_tabline();
|
||||
|
||||
RedrawingDisabled = r;
|
||||
p_lz = p;
|
||||
RedrawingDisabled = save_RedrawingDisabled;
|
||||
p_lz = save_p_lz;
|
||||
out_flush();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user