Patch 7.4.413
Problem:    MS-Windows: Using US international keyboard layout, inserting dead
            key by pressing space does not always work.  Issue 250.
Solution:   Let MS-Windows translate the message. (John Wellesz)
Files:      src/gui_w48.c


*** ../vim-7.4.412/src/gui_w48.c        2014-08-06 14:52:05.043236174 +0200
--- src/gui_w48.c       2014-08-22 18:41:09.151182571 +0200
***************
*** 614,619 ****
--- 614,621 ----
      char_u    string[40];
      int               len = 0;
  
+     dead_key = 0;
+ 
      len = char_to_string(ch, string, 40, FALSE);
      if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
      {
***************
*** 1788,1811 ****
      if (msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN)
      {
        vk = (int) msg.wParam;
!       /* handle key after dead key, but ignore shift, alt and control */
!       if (dead_key && vk != VK_SHIFT && vk != VK_MENU && vk != VK_CONTROL)
        {
            dead_key = 0;
!           /* handle non-alphabetic keys (ones that hopefully cannot generate
!            * umlaut-characters), unless when control is down */
!           if (vk < 'A' || vk > 'Z' || (GetKeyState(VK_CONTROL) & 0x8000))
!           {
!               MSG dm;
! 
!               dm.message = msg.message;
!               dm.hwnd = msg.hwnd;
!               dm.wParam = VK_SPACE;
!               MyTranslateMessage(&dm);        /* generate dead character */
!               if (vk != VK_SPACE) /* and send current character once more */
!                   PostMessage(msg.hwnd, msg.message, msg.wParam, msg.lParam);
!               return;
!           }
        }
  
        /* Check for CTRL-BREAK */
--- 1790,1810 ----
      if (msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN)
      {
        vk = (int) msg.wParam;
!       /*
!        * If a dead key was pressed and the user presses VK_SPACE, VK_BACK, or
!        * VK_ESCAPE it means that he actually wants to deal with the dead char
!        * now, so do nothing special and let Windows handle it.
!        *
!        * Note that VK_SPACE combines with the dead_key's character and only
!        * one WM_CHAR will be generated by TranslateMessage(), in the two
!        * other cases two WM_CHAR will be generated: the dead char and VK_BACK
!        * or VK_ESCAPE.  That is most likely what the user expects.
!        */
!       if (dead_key && (vk == VK_SPACE || vk == VK_BACK || vk == VK_ESCAPE))
        {
            dead_key = 0;
!           MyTranslateMessage(&msg);
!           return;
        }
  
        /* Check for CTRL-BREAK */
*** ../vim-7.4.412/src/version.c        2014-08-22 18:12:53.999244049 +0200
--- src/version.c       2014-08-22 18:39:03.915187113 +0200
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     413,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
43. You tell the kids they can't use the computer because "Daddy's got work to
    do" and you don't even have a job.

 /// 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/d/optout.

Raspunde prin e-mail lui