]> code.delx.au - gnu-emacs/commitdiff
Minor change in variable initialization on MS-Windows
authorIlya Zakharevich <ilya@math.berkeley.edu>
Mon, 17 Aug 2015 17:15:30 +0000 (20:15 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 17 Aug 2015 17:15:30 +0000 (20:15 +0300)
* src/w32fns.c <after_dead_key>: Initialize to -1.
(deliver_wm_chars): If after_deadkey is zero, don't set after_dead
non-zero.

src/w32fns.c

index 4b29e64bd5895111d2e704e83710a18e104b457e..2cb99c9005786e7a021e62be4a6e6964ea2cb68b 100644 (file)
@@ -2941,7 +2941,11 @@ get_wm_chars (HWND aWnd, int *buf, int buflen, int ignore_ctrl, int ctrl,
    environments!) should  have different values.  Moreover, switching to a
    non-Emacs window with the same language environment, and using (dead)keys
    there would change the value stored in the kernel, but not this value.  */
-static int after_deadkey = 0;
+/* A layout may emit deadkey=0.  It looks like this would reset the state
+   of the kernel's finite automaton (equivalent to emiting 0-length string,
+   which is otherwise impossible in the dead-key map of a layout).
+   Be ready to treat the case when this delivers WM_(SYS)DEADCHAR. */
+static int after_deadkey = -1;
 
 int
 deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
@@ -2951,7 +2955,7 @@ deliver_wm_chars (int do_translate, HWND hwnd, UINT msg, UINT wParam,
      points to a keypress.
      (However, the "old style" TranslateMessage() would deliver at most 16 of
      them.)  Be on a safe side, and prepare to treat many more.  */
-  int ctrl_cnt, buf[1024], count, is_dead, after_dead = (after_deadkey != -1);
+  int ctrl_cnt, buf[1024], count, is_dead, after_dead = (after_deadkey > 0);
 
   /* Since the keypress processing logic of Windows has a lot of state, it
      is important to call TranslateMessage() for every keyup/keydown, AND