diff --git a/7.4.413 b/7.4.413 new file mode 100644 index 0000000..975477e --- /dev/null +++ b/7.4.413 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.413 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +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 -- 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 ///