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.
This commit is contained in:
Philipp Stephani 2016-11-22 21:32:11 +01:00
parent 7287e9654e
commit d4e15492f7

View file

@ -70,7 +70,11 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)."
(cond
((null event) nil) ;Unknown/bogus byte sequence!
(is-down
(setf (terminal-parameter nil 'xterm-mouse-last-down) event)
(setf (terminal-parameter nil 'xterm-mouse-last-down)
;; EVENT might be handed back to the input queue, which
;; might modify it. Copy it into the terminal parameter
;; to guard against that.
(copy-sequence event))
vec)
(is-move vec)
(t