From: nicm Date: Wed, 10 Apr 2024 07:29:15 +0000 (+0000) Subject: Correct handling of mouse up events (don't ignore all but the last X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=9438bcf83d8096e8f2b787f4b8125ab80e9cf21d;p=openbsd 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. --- 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);