Op zaterdag 16 maart 2013 14:21:23 schreef Bram Moolenaar:
> Patch 7.3.862
> Problem:    Dragging the status line can be slow.
> Solution:   Look ahead and drop the drag event if there is a next one.
> Files:            src/eval.c, src/misc1.c, src/proto/misc1.pro, 
src/normal.c
> 
> 
> *** ../vim-7.3.861/src/eval.c 2013-02-26 21:43:28.000000000 +0100
> --- src/eval.c        2013-03-16 14:02:36.000000000 +0100
> ***************
> *** 11238,11264 ****
>       rettv->vval.v_string = vim_strsave(temp);
> 
>   #ifdef FEAT_MOUSE
> !     if (n == K_LEFTMOUSE
> !             || n == K_LEFTMOUSE_NM
> !             || n == K_LEFTDRAG
> !             || n == K_LEFTRELEASE
> !             || n == K_LEFTRELEASE_NM
> !             || n == K_MIDDLEMOUSE
> !             || n == K_MIDDLEDRAG
> !             || n == K_MIDDLERELEASE
> !             || n == K_RIGHTMOUSE
> !             || n == K_RIGHTDRAG
> !             || n == K_RIGHTRELEASE
> !             || n == K_X1MOUSE
> !             || n == K_X1DRAG
> !             || n == K_X1RELEASE
> !             || n == K_X2MOUSE
> !             || n == K_X2DRAG
> !             || n == K_X2RELEASE
> !             || n == K_MOUSELEFT
> !             || n == K_MOUSERIGHT
> !             || n == K_MOUSEDOWN
> !             || n == K_MOUSEUP)
>       {
>           int         row = mouse_row;
>           int         col = mouse_col;
> --- 11238,11244 ----
>       rettv->vval.v_string = vim_strsave(temp);
> 
>   #ifdef FEAT_MOUSE
> !     if (is_mouse_key(n))
>       {
>           int         row = mouse_row;
>           int         col = mouse_col;
> *** ../vim-7.3.861/src/misc1.c        2013-03-13 17:01:47.000000000 +0100
> --- src/misc1.c       2013-03-16 14:08:05.000000000 +0100
> ***************
> *** 3288,3293 ****
> --- 3288,3325 ----
>       return r;
>   }
> 
> + #if defined(FEAT_MOUSE) || defined(PROTO)
> + /*
> +  * Return TRUE if "c" is a mouse key.
> +  */
> +     int
> + is_mouse_key(c)
> +     int c;
> + {
> +     return c == K_LEFTMOUSE
> +     || c == K_LEFTMOUSE_NM
> +     || c == K_LEFTDRAG
> +     || c == K_LEFTRELEASE
> +     || c == K_LEFTRELEASE_NM
> +     || c == K_MIDDLEMOUSE
> +     || c == K_MIDDLEDRAG
> +     || c == K_MIDDLERELEASE
> +     || c == K_RIGHTMOUSE
> +     || c == K_RIGHTDRAG
> +     || c == K_RIGHTRELEASE
> +     || c == K_MOUSEDOWN
> +     || c == K_MOUSEUP
> +     || c == K_MOUSELEFT
> +     || c == K_MOUSERIGHT
> +     || c == K_X1MOUSE
> +     || c == K_X1DRAG
> +     || c == K_X1RELEASE
> +     || c == K_X2MOUSE
> +     || c == K_X2DRAG
> +     || c == K_X2RELEASE;
> + }
> + #endif
> +
>   /*
>    * Get a key stroke directly from the user.
>    * Ignores mouse clicks and scrollbar events, except a click for the
> left ***************
> *** 3373,3403 ****
>           n = TO_SPECIAL(buf[1], buf[2]);
>           if (buf[1] == KS_MODIFIER
> 
>                   || n == K_IGNORE
> 
> ! #ifdef FEAT_MOUSE
> !                 || n == K_LEFTMOUSE_NM
> !                 || n == K_LEFTDRAG
> !                 || n == K_LEFTRELEASE
> !                 || n == K_LEFTRELEASE_NM
> !                 || n == K_MIDDLEMOUSE
> !                 || n == K_MIDDLEDRAG
> !                 || n == K_MIDDLERELEASE
> !                 || n == K_RIGHTMOUSE
> !                 || n == K_RIGHTDRAG
> !                 || n == K_RIGHTRELEASE
> !                 || n == K_MOUSEDOWN
> !                 || n == K_MOUSEUP
> !                 || n == K_MOUSELEFT
> !                 || n == K_MOUSERIGHT
> !                 || n == K_X1MOUSE
> !                 || n == K_X1DRAG
> !                 || n == K_X1RELEASE
> !                 || n == K_X2MOUSE
> !                 || n == K_X2DRAG
> !                 || n == K_X2RELEASE
> ! # ifdef FEAT_GUI
> 
>                   || n == K_VER_SCROLLBAR
>                   || n == K_HOR_SCROLLBAR
> 
> - # endif
>   #endif
>              )
>           {
> --- 3405,3414 ----
>           n = TO_SPECIAL(buf[1], buf[2]);
>           if (buf[1] == KS_MODIFIER
> 
>                   || n == K_IGNORE
> 
> !                 || (is_mouse_key(n) && n != K_LEFTMOUSE)
> ! #ifdef FEAT_GUI
> 
>                   || n == K_VER_SCROLLBAR
>                   || n == K_HOR_SCROLLBAR
> 
>   #endif
>              )
>           {
> *** ../vim-7.3.861/src/proto/misc1.pro        2012-11-20 
16:56:49.000000000
> +0100 --- src/proto/misc1.pro 2013-03-16 14:02:33.000000000 +0100
> ***************
> *** 42,47 ****
> --- 42,48 ----
>   void check_status __ARGS((buf_T *buf));
>   void change_warning __ARGS((int col));
>   int ask_yesno __ARGS((char_u *str, int direct));
> + int is_mouse_key __ARGS((int c));
>   int get_keystroke __ARGS((void));
>   int get_number __ARGS((int colon, int *mouse_used));
>   int prompt_for_number __ARGS((int *mouse_used));
> *** ../vim-7.3.861/src/normal.c       2013-03-13 19:02:37.000000000 +0100
> --- src/normal.c      2013-03-16 14:09:34.000000000 +0100
> ***************
> *** 2443,2449 ****
>               return FALSE;
>       }
> 
> !     which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click,
> &is_drag);
> 
>   #ifdef FEAT_MOUSESHAPE
>       /* May have stopped dragging the status or separator line.  The
> pointer is --- 2443,2473 ----
>               return FALSE;
>       }
> 
> !     for (;;)
> !     {
> !     which_button = get_mouse_button(KEY2TERMCAP1(c), &is_click,
> &is_drag); !  if (is_drag)
> !     {
> !         /* If the next character is the same mouse event then use that
> !          * one. Speeds up dragging the status line. */
> !         if (vpeekc() != NUL)
> !         {
> !             int nc;
> !             int save_mouse_row = mouse_row;
> !             int save_mouse_col = mouse_col;
> !
> !             /* Need to get the character, peeking doesn't get the actual
> !              * one. */
> !             nc = safe_vgetc();
> !             if (c == nc)
> !                 continue;
> !             vungetc(nc);
> !             mouse_row = save_mouse_row;
> !             mouse_col = save_mouse_col;
> !         }
> !     }
> !     break;
> !     }
> 
>   #ifdef FEAT_MOUSESHAPE
>       /* May have stopped dragging the status or separator line.  The
> pointer is *** ../vim-7.3.861/src/version.c   2013-03-13
> 20:42:28.000000000 +0100 --- src/version.c    2013-03-16
> 14:18:36.000000000 +0100
> ***************
> *** 730,731 ****
> --- 730,733 ----
>   {   /* Add new patch number below this line */
> + /**/
> +     862,
>   /**/
> 
> --
> hundred-and-one symptoms of being an internet addict:
> 53. To find out what time it is, you send yourself an e-mail and check
> the "Date:" field.
> 
>  /// Bram Moolenaar -- [email protected] -- 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
> [email protected]. For more options, visit
> https://groups.google.com/groups/opt_out.

building vim tiny fails after this:
objects/misc1.o: In function `get_keystroke':
misc1.c:(.text+0x2331): undefined reference to `is_mouse_key'
misc1.c:(.text+0x23d1): undefined reference to `is_mouse_key'
collect2: error: ld returned 1 exit status
link.sh: Linking failed

patch attached to fix this.
-- 
Ike

-- 
-- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


diff -r 5c0652f455c9 src/misc1.c
--- a/src/misc1.c	Sat Mar 16 14:33:36 2013 +0100
+++ b/src/misc1.c	Sat Mar 16 19:31:21 2013 +0100
@@ -3405,7 +3405,9 @@
 	    n = TO_SPECIAL(buf[1], buf[2]);
 	    if (buf[1] == KS_MODIFIER
 		    || n == K_IGNORE
+#if defined(FEAT_MOUSE) || defined(PROTO)
 		    || (is_mouse_key(n) && n != K_LEFTMOUSE)
+#endif
 #ifdef FEAT_GUI
 		    || n == K_VER_SCROLLBAR
 		    || n == K_HOR_SCROLLBAR

Raspunde prin e-mail lui