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 "<t_mouse>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 "<t_mouse>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 -- b...@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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui