Mercurial > emacs
changeset 106738:04c6036b9437
* keyboard.c (read_key_sequence): Catch keyboard switch after
making a new tty frame (Bug#5095).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Tue, 05 Jan 2010 07:04:04 -0700 |
parents | 6efbdb23aea3 |
children | 861edc07f3ea 4d2fbb46854b |
files | src/ChangeLog src/keyboard.c |
diffstat | 2 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Tue Jan 05 21:03:13 2010 +0900 +++ b/src/ChangeLog Tue Jan 05 07:04:04 2010 -0700 @@ -1,3 +1,8 @@ +2010-01-05 Chong Yidong <cyd@stupidchicken.com> + + * keyboard.c (read_key_sequence): Catch keyboard switch after + making a new tty frame (Bug#5095). + 2010-01-05 Kenichi Handa <handa@m17n.org> * fontset.c (fontset_find_font): Fix getting the frame pointer.
--- a/src/keyboard.c Tue Jan 05 21:03:13 2010 +0900 +++ b/src/keyboard.c Tue Jan 05 07:04:04 2010 -0700 @@ -9502,7 +9502,13 @@ key = read_char (NILP (prompt), nmaps, (Lisp_Object *) submaps, last_nonmenu_event, &used_mouse_menu, NULL); - if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ + if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ + /* When switching to a new tty (with a new keyboard), + read_char returns the new buffer, rather than -2 + (Bug#5095). This is because `terminal-init-xterm' + calls read-char, which eats the wrong_kboard_jmpbuf + return. Any better way to fix this? -- cyd */ + || (interrupted_kboard != current_kboard)) { int found = 0; struct kboard *k;