From 3ec4d953c27e2fe2c47fdbbd145cbdf2f7e3fad6 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 24 Nov 2016 14:38:55 +0000 Subject: If in the middle of a drag, don't use an invalid key, just use KEYC_MOUSE as a placeholder. Reported by Artem Fokin. --- usr.bin/tmux/server-client.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'usr.bin/tmux/server-client.c') diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index e57f0b1a78b..cc4fd2dba20 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.202 2016/11/24 13:46:50 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.203 2016/11/24 14:38:55 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -474,9 +474,10 @@ have_event: case NOTYPE: break; case DRAG: - if (c->tty.mouse_drag_update != NULL) + if (c->tty.mouse_drag_update != NULL) { c->tty.mouse_drag_update(c, m); - else { + key = KEYC_MOUSE; + } else { switch (MOUSE_BUTTONS(b)) { case 0: if (where == PANE) @@ -738,6 +739,13 @@ server_client_handle_key(struct client *c, key_code key) m->valid = 1; m->key = key; + + /* + * A mouse event that continues to be valid but that we do not + * want to pass through. + */ + if (key == KEYC_MOUSE) + return; } else m->valid = 0; -- cgit v1.2.3-59-g8ed1b