1
0
forked from aniani/vim

patch 7.4.1995

Problem:    GUI: cursor drawn in wrong place if a timer callback causes a
            screen update. (David Samvelyan)
Solution:   Also redraw the cursor when it's blinking and on.
This commit is contained in:
Bram Moolenaar
2016-07-07 16:43:02 +02:00
parent 05e418d436
commit 9d5d3c9c44
12 changed files with 40 additions and 3 deletions

View File

@@ -818,6 +818,12 @@ gui_mch_is_blinking(void)
return blink_state != BLINK_NONE;
}
int
gui_mch_is_blink_off(void)
{
return blink_state == BLINK_OFF;
}
void
gui_mch_set_blinking(long waittime, long on, long off)
{

View File

@@ -5116,6 +5116,12 @@ gui_mch_destroy_scrollbar(scrollbar_T *sb)
int
gui_mch_is_blinking(void)
{
return FALSE;
}
int
gui_mch_is_blink_off(void)
{
return FALSE;
}

View File

@@ -2238,6 +2238,12 @@ gui_mch_is_blinking(void)
return blink_state != BLINK_NONE;
}
int
gui_mch_is_blink_off(void)
{
return blink_state == BLINK_OFF;
}
void
gui_mch_set_blinking(long wait, long on, long off)
{

View File

@@ -546,6 +546,12 @@ gui_mch_is_blinking(void)
return blink_state != BLINK_NONE;
}
int
gui_mch_is_blink_off(void)
{
return blink_state == BLINK_OFF;
}
void
gui_mch_set_blinking(long wait, long on, long off)
{

View File

@@ -3161,6 +3161,12 @@ gui_mch_is_blinking(void)
return blink_state != BLINK_NONE;
}
int
gui_mch_is_blink_off(void)
{
return blink_state == BLINK_OFF;
}
void
gui_mch_set_blinking(long waittime, long on, long off)
{

View File

@@ -2,6 +2,7 @@
void gui_mch_prepare(int *argc, char **argv);
void gui_mch_free_all(void);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long waittime, long on, long off);
void gui_mch_stop_blink(void);
void gui_mch_start_blink(void);

View File

@@ -15,6 +15,7 @@ void gui_mac_focus_change(EventRecord *event);
void gui_mac_update(EventRecord *event);
short gui_mch_get_mac_menu_item_index(vimmenu_T *menu, vimmenu_T *parent);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long wait, long on, long off);
void gui_mch_stop_blink(void);
void gui_mch_start_blink(void);

View File

@@ -40,6 +40,7 @@ void gui_mch_draw_string(int row, int col, char_u *s, int len, int flags);
void gui_mch_draw_hollow_cursor(guicolor_T color);
void gui_mch_draw_part_cursor(int w, int h, guicolor_T color);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long wait, long on, long off);
void gui_mch_start_blink(void);
void gui_mch_stop_blink(void);

View File

@@ -2,6 +2,7 @@
int directx_enabled(void);
int gui_mch_set_rendering_options(char_u *s);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long wait, long on, long off);
void gui_mch_stop_blink(void);
void gui_mch_start_blink(void);

View File

@@ -54,6 +54,7 @@ void gui_mch_menu_hidden(vimmenu_T *menu, int hidden);
void gui_mch_draw_menubar(void);
void gui_x11_menu_cb(Widget w, XtPointer client_data, XtPointer call_data);
int gui_mch_is_blinking(void);
int gui_mch_is_blink_off(void);
void gui_mch_set_blinking(long waittime, long on, long off);
void gui_mch_stop_blink(void);
void gui_mch_start_blink(void);

View File

@@ -432,9 +432,9 @@ redraw_after_callback(void)
#ifdef FEAT_GUI
if (gui.in_use)
{
/* Don't update the cursor while it is blinking, it will get
* updated soon and this avoids interrupting the blinking. */
if (!gui_mch_is_blinking())
/* Don't update the cursor when it is blinking and off to avoid
* flicker. */
if (!gui_mch_is_blink_off())
gui_update_cursor(FALSE, FALSE);
gui_mch_flush();
}

View File

@@ -758,6 +758,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1995,
/**/
1994,
/**/