diff options
| author | Philipp Stephani | 2016-11-22 21:32:11 +0100 |
|---|---|---|
| committer | Philipp Stephani | 2016-11-22 21:32:11 +0100 |
| commit | d4e15492f7c55eabdadc6f3735b84972748e6c0d (patch) | |
| tree | 615c836b60c8d9d4edb326e5ea79a51a60c17e81 | |
| parent | 7287e9654e5370e8069241320262d0b8b8002843 (diff) | |
| download | emacs-d4e15492f7c55eabdadc6f3735b84972748e6c0d.tar.gz emacs-d4e15492f7c55eabdadc6f3735b84972748e6c0d.zip | |
Guard terminal parameter in XTerm mouse mode
It has been observed (in the HTerm terminal emulator) that the
event stored in the 'xterm-mouse-last-down' terminal parameter gets
overwritten during a mouse drag operation, causing Emacs to attempt to
synthesize the non-existing <drag-mouse-0> event. Copy the event into
the terminal parameter to protect against such modifications.
* lisp/xt-mouse.el (xterm-mouse-translate-1): Guard against modification
of input event list.
| -rw-r--r-- | lisp/xt-mouse.el | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index a2b64019f97..15fc6de6a42 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el | |||
| @@ -70,7 +70,11 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)." | |||
| 70 | (cond | 70 | (cond |
| 71 | ((null event) nil) ;Unknown/bogus byte sequence! | 71 | ((null event) nil) ;Unknown/bogus byte sequence! |
| 72 | (is-down | 72 | (is-down |
| 73 | (setf (terminal-parameter nil 'xterm-mouse-last-down) event) | 73 | (setf (terminal-parameter nil 'xterm-mouse-last-down) |
| 74 | ;; EVENT might be handed back to the input queue, which | ||
| 75 | ;; might modify it. Copy it into the terminal parameter | ||
| 76 | ;; to guard against that. | ||
| 77 | (copy-sequence event)) | ||
| 74 | vec) | 78 | vec) |
| 75 | (is-move vec) | 79 | (is-move vec) |
| 76 | (t | 80 | (t |