From 84319aa8f013238ccc1bbd6ea44b9e6be7c58db2 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. --- server-client.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index dd2a274a..ff43f73d 100644 --- a/server-client.c +++ b/server-client.c @@ -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