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.
This commit is contained in:
nicm 2024-04-10 07:29:15 +00:00
parent 424f13fe13
commit c62a9ca16b

View File

@ -626,6 +626,8 @@ server_client_check_mouse(struct client *c, struct key_event *event)
} else if (MOUSE_RELEASE(m->b)) { } else if (MOUSE_RELEASE(m->b)) {
type = UP; type = UP;
x = m->x, y = m->y, b = m->lb; 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); log_debug("up at %u,%u", x, y);
} else { } else {
if (c->flags & CLIENT_DOUBLECLICK) { 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); log_debug("triple-click at %u,%u", x, y);
goto have_event; goto have_event;
} }
} else { }
/* DOWN is the only remaining event type. */
if (type == NOTYPE) {
type = DOWN; type = DOWN;
x = m->x, y = m->y, b = m->b; x = m->x, y = m->y, b = m->b;
log_debug("down at %u,%u", x, y); log_debug("down at %u,%u", x, y);