From 9438bcf83d8096e8f2b787f4b8125ab80e9cf21d Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 10 Apr 2024 07:29:15 +0000 Subject: [PATCH] Correct handling of mouse up events (don't ignore all but the last released button), and always process down event for double click. From Rudy Dellomas III in GitHub issue 3919. --- usr.bin/tmux/server-client.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index 01e3bd1ac6b..6ed62c49bec 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.404 2024/01/16 13:09:11 claudio Exp $ */ +/* $OpenBSD: server-client.c,v 1.405 2024/04/10 07:29:15 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -626,6 +626,8 @@ server_client_check_mouse(struct client *c, struct key_event *event) } else if (MOUSE_RELEASE(m->b)) { type = UP; x = m->x, y = m->y, b = m->lb; + if (m->sgr_type == 'm') + b = m->sgr_b; log_debug("up at %u,%u", x, y); } else { if (c->flags & CLIENT_DOUBLECLICK) { @@ -646,7 +648,10 @@ server_client_check_mouse(struct client *c, struct key_event *event) log_debug("triple-click at %u,%u", x, y); goto have_event; } - } else { + } + + /* DOWN is the only remaining event type. */ + if (type == NOTYPE) { type = DOWN; x = m->x, y = m->y, b = m->b; log_debug("down at %u,%u", x, y); -- 2.20.1