diff options
-rw-r--r-- | key-bindings.c | 22 | ||||
-rw-r--r-- | server-client.c | 21 |
2 files changed, 26 insertions, 17 deletions
diff --git a/key-bindings.c b/key-bindings.c index 9bc61b62..e8eedca5 100644 --- a/key-bindings.c +++ b/key-bindings.c @@ -259,12 +259,13 @@ key_bindings_init(void) "bind -Tcopy-mode n send -X search-again", "bind -Tcopy-mode q send -X cancel", "bind -Tcopy-mode t command-prompt -1p'jump to forward' \"send -X jump-to-forward \\\"%%%\\\"\"", - "bind -Tcopy-mode MouseDrag1Pane send -X begin-selection", + "bind -Tcopy-mode MouseDown1Pane select-pane", + "bind -Tcopy-mode MouseDrag1Pane select-pane\\; send -X begin-selection", "bind -Tcopy-mode MouseDragEnd1Pane send -X copy-selection-and-cancel", - "bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up", - "bind -Tcopy-mode WheelDownPane send -N5 -X scroll-down", - "bind -Tcopy-mode DoubleClick1Pane send -X select-word", - "bind -Tcopy-mode TripleClick1Pane send -X select-line", + "bind -Tcopy-mode WheelUpPane select-pane\\; send -N5 -X scroll-up", + "bind -Tcopy-mode WheelDownPane select-pane\\; send -N5 -X scroll-down", + "bind -Tcopy-mode DoubleClick1Pane select-pane\\; send -X select-word", + "bind -Tcopy-mode TripleClick1Pane select-pane\\; send -X select-line", "bind -Tcopy-mode NPage send -X page-down", "bind -Tcopy-mode PPage send -X page-up", "bind -Tcopy-mode Up send -X cursor-up", @@ -356,12 +357,13 @@ key_bindings_init(void) "bind -Tcopy-mode-vi w send -X next-word", "bind -Tcopy-mode-vi { send -X previous-paragraph", "bind -Tcopy-mode-vi } send -X next-paragraph", - "bind -Tcopy-mode-vi MouseDrag1Pane send -X begin-selection", + "bind -Tcopy-mode-vi MouseDown1Pane select-pane", + "bind -Tcopy-mode-vi MouseDrag1Pane select-pane\\; send -X begin-selection", "bind -Tcopy-mode-vi MouseDragEnd1Pane send -X copy-selection-and-cancel", - "bind -Tcopy-mode-vi WheelUpPane send -N5 -X scroll-up", - "bind -Tcopy-mode-vi WheelDownPane send -N5 -X scroll-down", - "bind -Tcopy-mode-vi DoubleClick1Pane send -X select-word", - "bind -Tcopy-mode-vi TripleClick1Pane send -X select-line", + "bind -Tcopy-mode-vi WheelUpPane select-pane\\; send -N5 -X scroll-up", + "bind -Tcopy-mode-vi WheelDownPane select-pane\\; send -N5 -X scroll-down", + "bind -Tcopy-mode-vi DoubleClick1Pane select-pane\\; send -X select-word", + "bind -Tcopy-mode-vi TripleClick1Pane select-pane\\; send -X select-line", "bind -Tcopy-mode-vi BSpace send -X cursor-left", "bind -Tcopy-mode-vi NPage send -X page-down", "bind -Tcopy-mode-vi PPage send -X page-up", diff --git a/server-client.c b/server-client.c index fbe14e82..dd2a274a 100644 --- a/server-client.c +++ b/server-client.c @@ -698,10 +698,6 @@ server_client_handle_key(struct client *c, key_code key) 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 @@ server_client_handle_key(struct client *c, key_code key) 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 @@ retry: 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; |