To: vim_dev@googlegroups.com Subject: Patch 7.4.1890 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1890 Problem: GUI: When channel data is received the cursor blinking is interrupted. (Ramel Eshed) Solution: Don't update the cursor when it is blinking. Files: src/screen.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/gui_mac.c, src/proto/gui_mac.pro, src/gui_photon.c, src/proto/gui_photon.pro, src/gui_w32.c, src/proto/gui_w32.pro, src/gui_x11.c, src/proto/gui_x11.pro *** ../vim-7.4.1889/src/screen.c 2016-05-24 10:51:26.543537913 +0200 --- src/screen.c 2016-06-04 15:53:40.674214953 +0200 *************** *** 432,438 **** #ifdef FEAT_GUI if (gui.in_use) { ! gui_update_cursor(TRUE, FALSE); gui_mch_flush(); } #endif --- 432,441 ---- #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()) ! gui_update_cursor(FALSE, FALSE); gui_mch_flush(); } #endif *** ../vim-7.4.1889/src/gui_gtk_x11.c 2016-06-02 14:29:59.132661030 +0200 --- src/gui_gtk_x11.c 2016-06-04 16:03:17.514207018 +0200 *************** *** 810,815 **** --- 810,821 ---- } #endif + int + gui_mch_is_blinking(void) + { + return blink_state != BLINK_NONE; + } + void gui_mch_set_blinking(long waittime, long on, long off) { *** ../vim-7.4.1889/src/proto/gui_gtk_x11.pro 2016-01-19 13:21:55.837334377 +0100 --- src/proto/gui_gtk_x11.pro 2016-06-04 15:42:58.986223780 +0200 *************** *** 1,6 **** --- 1,7 ---- /* gui_gtk_x11.c */ void gui_mch_prepare(int *argc, char **argv); void gui_mch_free_all(void); + int gui_mch_is_blinking(void); void gui_mch_set_blinking(long waittime, long on, long off); void gui_mch_stop_blink(void); void gui_mch_start_blink(void); *** ../vim-7.4.1889/src/gui_mac.c 2016-06-02 22:27:04.256267269 +0200 --- src/gui_mac.c 2016-06-04 16:03:02.278207227 +0200 *************** *** 5114,5119 **** --- 5114,5124 ---- #endif } + int + gui_mch_is_blinking(void) + { + return FALSE; + } /* * Cursor blink functions. *** ../vim-7.4.1889/src/proto/gui_mac.pro 2016-01-30 13:28:23.925007165 +0100 --- src/proto/gui_mac.pro 2016-06-04 16:02:58.858207274 +0200 *************** *** 14,19 **** --- 14,20 ---- 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); void gui_mch_set_blinking(long wait, long on, long off); void gui_mch_stop_blink(void); void gui_mch_start_blink(void); *** ../vim-7.4.1889/src/gui_photon.c 2016-04-26 20:59:24.728486510 +0200 --- src/gui_photon.c 2016-06-04 16:04:51.706205722 +0200 *************** *** 2232,2237 **** --- 2232,2243 ---- DRAW_END; } + int + gui_mch_is_blinking(void) + { + return blink_state != BLINK_NONE; + } + void gui_mch_set_blinking(long wait, long on, long off) { *** ../vim-7.4.1889/src/proto/gui_photon.pro 2016-01-19 13:21:55.837334377 +0100 --- src/proto/gui_photon.pro 2016-06-04 16:05:13.258205426 +0200 *************** *** 39,44 **** --- 39,45 ---- 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); void gui_mch_set_blinking(long wait, long on, long off); void gui_mch_start_blink(void); void gui_mch_stop_blink(void); *** ../vim-7.4.1889/src/gui_w32.c 2016-06-02 15:49:33.008595362 +0200 --- src/gui_w32.c 2016-06-04 16:05:47.706204952 +0200 *************** *** 540,545 **** --- 540,551 ---- static long_u blink_offtime = 250; static UINT blink_timer = 0; + int + gui_mch_is_blinking(void) + { + return blink_state != BLINK_NONE; + } + void gui_mch_set_blinking(long wait, long on, long off) { *** ../vim-7.4.1889/src/proto/gui_w32.pro 2016-01-29 21:11:20.967061365 +0100 --- src/proto/gui_w32.pro 2016-06-04 16:05:52.486204886 +0200 *************** *** 1,6 **** --- 1,7 ---- /* gui_w32.c */ int directx_enabled(void); int gui_mch_set_rendering_options(char_u *s); + int gui_mch_is_blinking(void); void gui_mch_set_blinking(long wait, long on, long off); void gui_mch_stop_blink(void); void gui_mch_start_blink(void); *** ../vim-7.4.1889/src/gui_x11.c 2016-06-02 14:29:59.136661030 +0200 --- src/gui_x11.c 2016-06-04 16:06:17.030204548 +0200 *************** *** 3155,3160 **** --- 3155,3166 ---- static long_u blink_offtime = 250; static XtIntervalId blink_timer = (XtIntervalId)0; + int + gui_mch_is_blinking(void) + { + return blink_state != BLINK_NONE; + } + void gui_mch_set_blinking(long waittime, long on, long off) { *** ../vim-7.4.1889/src/proto/gui_x11.pro 2016-01-19 13:21:55.841334333 +0100 --- src/proto/gui_x11.pro 2016-06-04 16:06:20.258204504 +0200 *************** *** 53,58 **** --- 53,59 ---- 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); void gui_mch_set_blinking(long waittime, long on, long off); void gui_mch_stop_blink(void); void gui_mch_start_blink(void); *** ../vim-7.4.1889/src/version.c 2016-06-04 14:51:56.434265908 +0200 --- src/version.c 2016-06-04 16:23:02.862190712 +0200 *************** *** 755,756 **** --- 755,758 ---- { /* Add new patch number below this line */ + /**/ + 1890, /**/ -- The future isn't what it used to be. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///