=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-client.c,v retrieving revision 1.201 retrieving revision 1.202 diff -u -r1.201 -r1.202 --- src/usr.bin/tmux/server-client.c 2016/11/23 17:01:24 1.201 +++ src/usr.bin/tmux/server-client.c 2016/11/24 13:46:50 1.202 @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.201 2016/11/23 17:01:24 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.202 2016/11/24 13:46:50 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -698,10 +698,6 @@ if (s == NULL || (c->flags & (CLIENT_DEAD|CLIENT_SUSPENDED)) != 0) return; w = s->curw->window; - if (KEYC_IS_MOUSE(key)) - wp = cmd_mouse_pane(m, NULL, NULL); - else - wp = w->active; /* Update the activity timer. */ if (gettimeofday(&c->activity_time, NULL) != 0) @@ -742,12 +738,19 @@ m->valid = 1; m->key = key; - - if (!options_get_number(s->options, "mouse")) - goto forward; } else m->valid = 0; + /* Find affected pane. */ + if (KEYC_IS_MOUSE(key) && m->valid) + wp = cmd_mouse_pane(m, NULL, NULL); + else + wp = w->active; + + /* Forward mouse keys if disabled. */ + if (key == KEYC_MOUSE && !options_get_number(s->options, "mouse")) + goto forward; + /* Treat everything as a regular key when pasting is detected. */ if (!KEYC_IS_MOUSE(key) && server_client_assume_paste(s)) goto forward; @@ -764,6 +767,10 @@ table = c->keytable; else table = key_bindings_get_table(name, 1); + if (wp == NULL) + log_debug("key table %s (no pane)", table->name); + else + log_debug("key table %s (pane %%%u)", table->name, wp->id); /* Try to see if there is a key binding in the current table. */ bd_find.key = key;