summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Stephani <phst@google.com>2016-11-22 21:32:11 +0100
committerPhilipp Stephani <phst@google.com>2016-11-22 21:32:11 +0100
commitd4e15492f7c55eabdadc6f3735b84972748e6c0d (patch)
tree615c836b60c8d9d4edb326e5ea79a51a60c17e81
parent7287e9654e5370e8069241320262d0b8b8002843 (diff)
downloademacs-d4e15492f7c55eabdadc6f3735b84972748e6c0d.tar.gz
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.el6
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)."
(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