To: vim_dev@googlegroups.com Subject: Patch 8.1.1265 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.1265 Problem: When GPM mouse support is enabled double clicks in xterm do not work. Solution: Use KS_GPM_MOUSE for GPM mouse events. Files: src/term.c, src/os_unix.c, src/keymap.h *** ../vim-8.1.1264/src/term.c 2019-05-03 21:10:32.261521512 +0200 --- src/term.c 2019-05-04 16:45:00.727934730 +0200 *************** *** 4396,4404 **** # endif #endif int cpo_koffset; - #ifdef FEAT_MOUSE_GPM - extern int gpm_flag; /* gpm library variable */ - #endif cpo_koffset = (vim_strchr(p_cpo, CPO_KOFFSET) != NULL); --- 4396,4401 ---- *************** *** 5122,5127 **** --- 5119,5127 ---- * If it is a mouse click, get the coordinates. */ if (key_name[0] == KS_MOUSE + # ifdef FEAT_MOUSE_GPM + || key_name[0] == KS_GPM_MOUSE + # endif # ifdef FEAT_MOUSE_JSB || key_name[0] == KS_JSBTERM_MOUSE # endif *************** *** 5144,5150 **** # if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI) \ || defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE) ! if (key_name[0] == (int)KS_MOUSE) { /* * For xterm we get "scr", where --- 5144,5154 ---- # if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI) \ || defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE) ! if (key_name[0] == KS_MOUSE ! # ifdef FEAT_MOUSE_GPM ! || key_name[0] == KS_GPM_MOUSE ! # endif ! ) { /* * For xterm we get "scr", where *************** *** 5274,5282 **** modifiers = 0; } ! if (key_name[0] == (int)KS_MOUSE # ifdef FEAT_MOUSE_URXVT ! || key_name[0] == (int)KS_URXVT_MOUSE # endif || key_name[0] == KS_SGR_MOUSE || key_name[0] == KS_SGR_MOUSE_RELEASE) --- 5278,5289 ---- modifiers = 0; } ! if (key_name[0] == KS_MOUSE ! # ifdef FEAT_MOUSE_GPM ! || key_name[0] == KS_GPM_MOUSE ! # endif # ifdef FEAT_MOUSE_URXVT ! || key_name[0] == KS_URXVT_MOUSE # endif || key_name[0] == KS_SGR_MOUSE || key_name[0] == KS_SGR_MOUSE_RELEASE) *************** *** 5293,5299 **** && !gui.in_use # endif # ifdef FEAT_MOUSE_GPM ! && gpm_flag == 0 # endif ) { --- 5300,5306 ---- && !gui.in_use # endif # ifdef FEAT_MOUSE_GPM ! && key_name[0] != KS_GPM_MOUSE # endif ) { *************** *** 5342,5348 **** } # endif /* !UNIX || FEAT_MOUSE_XTERM */ # ifdef FEAT_MOUSE_NET ! if (key_name[0] == (int)KS_NETTERM_MOUSE) { int mc, mr; --- 5349,5355 ---- } # endif /* !UNIX || FEAT_MOUSE_XTERM */ # ifdef FEAT_MOUSE_NET ! if (key_name[0] == KS_NETTERM_MOUSE) { int mc, mr; *************** *** 5365,5371 **** } # endif /* FEAT_MOUSE_NET */ # ifdef FEAT_MOUSE_JSB ! if (key_name[0] == (int)KS_JSBTERM_MOUSE) { int mult, val, iter, button, status; --- 5372,5378 ---- } # endif /* FEAT_MOUSE_NET */ # ifdef FEAT_MOUSE_JSB ! if (key_name[0] == KS_JSBTERM_MOUSE) { int mult, val, iter, button, status; *************** *** 5489,5495 **** } # endif /* FEAT_MOUSE_JSB */ # ifdef FEAT_MOUSE_DEC ! if (key_name[0] == (int)KS_DEC_MOUSE) { /* The DEC Locator Input Model * Netterm delivers the code sequence: --- 5496,5502 ---- } # endif /* FEAT_MOUSE_JSB */ # ifdef FEAT_MOUSE_DEC ! if (key_name[0] == KS_DEC_MOUSE) { /* The DEC Locator Input Model * Netterm delivers the code sequence: *************** *** 5624,5630 **** } # endif /* FEAT_MOUSE_DEC */ # ifdef FEAT_MOUSE_PTERM ! if (key_name[0] == (int)KS_PTERM_MOUSE) { int button, num_clicks, action; --- 5631,5637 ---- } # endif /* FEAT_MOUSE_DEC */ # ifdef FEAT_MOUSE_PTERM ! if (key_name[0] == KS_PTERM_MOUSE) { int button, num_clicks, action; *************** *** 5705,5718 **** { # ifdef CHECK_DOUBLE_CLICK # ifdef FEAT_MOUSE_GPM - # ifdef FEAT_GUI /* ! * Only for Unix, when GUI or gpm is not active, we handle ! * multi-clicks here. */ ! if (gpm_flag == 0 && !gui.in_use) # else ! if (gpm_flag == 0) # endif # else # ifdef FEAT_GUI --- 5712,5725 ---- { # ifdef CHECK_DOUBLE_CLICK # ifdef FEAT_MOUSE_GPM /* ! * Only for Unix, when GUI not active, we handle ! * multi-clicks here, but not for GPM mouse events. */ ! # ifdef FEAT_GUI ! if (key_name[0] != KS_GPM_MOUSE && !gui.in_use) # else ! if (key_name[0] != KS_GPM_MOUSE) # endif # else # ifdef FEAT_GUI *************** *** 5800,5806 **** /* Work out our pseudo mouse event. Note that MOUSE_RELEASE gets * added, then it's not mouse up/down. */ ! key_name[0] = (int)KS_EXTRA; if (wheel_code != 0 && (wheel_code & MOUSE_RELEASE) != MOUSE_RELEASE) { --- 5807,5813 ---- /* Work out our pseudo mouse event. Note that MOUSE_RELEASE gets * added, then it's not mouse up/down. */ ! key_name[0] = KS_EXTRA; if (wheel_code != 0 && (wheel_code & MOUSE_RELEASE) != MOUSE_RELEASE) { *** ../vim-8.1.1264/src/os_unix.c 2019-05-03 23:15:34.048180407 +0200 --- src/os_unix.c 2019-05-04 16:33:38.907403683 +0200 *************** *** 3794,3800 **** && !gui.in_use # endif ) ! set_mouse_termcode(KS_MOUSE, (char_u *)IF_EB("\033MG", ESC_STR "MG")); # endif # ifdef FEAT_SYSMOUSE --- 3794,3803 ---- && !gui.in_use # endif ) ! set_mouse_termcode(KS_GPM_MOUSE, ! (char_u *)IF_EB("\033MG", ESC_STR "MG")); ! else ! del_mouse_termcode(KS_GPM_MOUSE); # endif # ifdef FEAT_SYSMOUSE *************** *** 7065,7071 **** Gpm_Close(); } ! /* Reads gpm event and adds special keys to input buf. Returns length of * generated key sequence. * This function is styled after gui_send_mouse_event(). */ --- 7068,7075 ---- Gpm_Close(); } ! /* ! * Reads gpm event and adds special keys to input buf. Returns length of * generated key sequence. * This function is styled after gui_send_mouse_event(). */ *** ../vim-8.1.1264/src/keymap.h 2018-05-01 18:40:08.000000000 +0200 --- src/keymap.h 2019-05-04 16:32:53.487632660 +0200 *************** *** 114,119 **** --- 114,122 ---- #define KS_SGR_MOUSE 237 #define KS_SGR_MOUSE_RELEASE 236 + /* Used for the GPM mouse. */ + #define KS_GPM_MOUSE 235 + /* * Filler used after KS_SPECIAL and others */ *** ../vim-8.1.1264/src/version.c 2019-05-04 16:55:15.786921815 +0200 --- src/version.c 2019-05-04 16:57:04.670178629 +0200 *************** *** 769,770 **** --- 769,772 ---- { /* Add new patch number below this line */ + /**/ + 1265, /**/ -- Veni, Vidi, VW -- I came, I saw, I drove around in a little car. /// 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 ///