diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-08 21:41:54 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-08 21:41:54 +0200 |
commit | 144445d15f2369a58b94b6fee2fe162fc81c8abe (patch) | |
tree | c75b2ad8f8410ae7aa728b601ddb051b14b7311f /src | |
parent | a06ec8f345eabb66e5b7d7c0192cfebdde63115d (diff) | |
download | vim-git-144445d15f2369a58b94b6fee2fe162fc81c8abe.tar.gz |
patch 7.4.2003v7.4.2003
Problem: Still cursor flickering when a callback updates the screen. (David
Samvelyan)
Solution: Put the cursor in the right position after updating the screen.
Diffstat (limited to 'src')
-rw-r--r-- | src/screen.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/screen.c b/src/screen.c index 2f08afb7a..4ddded9bf 100644 --- a/src/screen.c +++ b/src/screen.c @@ -422,7 +422,7 @@ redraw_after_callback(void) ; /* do nothing */ else if (State & CMDLINE) redrawcmdline(); - else if ((State & NORMAL) || (State & INSERT)) + else if (State & (NORMAL | INSERT)) { update_screen(0); setcursor(); @@ -486,8 +486,6 @@ update_curbuf(int type) } /* - * update_screen() - * * Based on the current value of curwin->w_topline, transfer a screenfull * of stuff from Filemem to ScreenLines[], and update curwin->w_botline. */ @@ -499,6 +497,10 @@ update_screen(int type) #if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_CLIPBOARD) int did_one; #endif +#ifdef FEAT_GUI + int gui_cursor_col; + int gui_cursor_row; +#endif /* Don't do anything if the screen structures are (not yet) valid. */ if (!screen_valid(TRUE)) @@ -696,7 +698,11 @@ update_screen(int type) * scrolling may make it difficult to redraw the text under * it. */ if (gui.in_use) + { + gui_cursor_col = gui.cursor_col; + gui_cursor_row = gui.cursor_row; gui_undraw_cursor(); + } #endif } #endif @@ -752,7 +758,13 @@ update_screen(int type) { out_flush(); /* required before updating the cursor */ if (did_one) + { + /* Put the GUI position where the cursor was, gui_update_cursor() + * uses that. */ + gui.col = gui_cursor_col; + gui.row = gui_cursor_row; gui_update_cursor(FALSE, FALSE); + } gui_update_scrollbars(FALSE); } #endif diff --git a/src/version.c b/src/version.c index 38193e2a3..598135cc5 100644 --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2003, +/**/ 2002, /**/ 2001, |