mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
patch 9.2.0437: MS-Windows: cursor flicker in vtp mode
Problem: MS-Windows: cursor flicker in vtp mode
Solution: Skip mch_update_cursor() in cursor_visible() when vtp is
active (Yasuhiro Matsumoto).
In vtp (ConPTY) mode the cursor visibility is controlled by DECTCEM
(\033[?25h / \033[?25l). The follow-up call to mch_update_cursor() then
re-emits DECSCUSR (\033[0 q etc.) on every visibility toggle even though
the cursor shape did not change. Some terminals briefly redisplay the
cursor when DECSCUSR arrives, so this can cause a visible flash at the
position the cursor will be moved to next (e.g. column 0 ahead of a line
redraw).
In non-vtp mode the call is still required because SetConsoleCursorInfo()
inside mch_set_cursor_shape() reads s_cursor_visible to apply the
visibility change, so keep that path unchanged.
closes: #20122
Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
77677c33de
commit
9d3019104c
@@ -7104,9 +7104,19 @@ cursor_visible(BOOL fVisible)
|
||||
s_cursor_visible = fVisible;
|
||||
|
||||
if (vtp_working)
|
||||
{
|
||||
// In vtp mode, visibility is controlled solely by DECTCEM. Skip
|
||||
// mch_update_cursor() since shape is independent of visibility and
|
||||
// re-emitting DECSCUSR can cause the terminal to briefly redisplay
|
||||
// the cursor while a redraw is in progress.
|
||||
vtp_printf("\033[?25%c", fVisible ? 'h' : 'l');
|
||||
return;
|
||||
}
|
||||
|
||||
# ifdef MCH_CURSOR_SHAPE
|
||||
// Non-vtp Windows console: SetConsoleCursorInfo() consults
|
||||
// s_cursor_visible inside mch_set_cursor_shape(), so the call is needed
|
||||
// to apply the new visibility.
|
||||
mch_update_cursor();
|
||||
# endif
|
||||
}
|
||||
|
||||
@@ -729,6 +729,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
437,
|
||||
/**/
|
||||
436,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user