summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2017-06-06 18:01:13 +0100
committerThomas Adam <thomas@xteddy.org>2017-06-06 18:01:13 +0100
commit707798005537e3f01b7937da7abc001a56b5be74 (patch)
treecc9ee3d1ccece290652873d38e86b6f141d9d35c
parent78352fdd328b611d935ba051288191b33278cc4a (diff)
parent50b27c8c0dc65cb418ed422e2cdd035a7bafedfe (diff)
Merge branch 'obsd-master'
-rw-r--r--server-client.c5
-rw-r--r--tty.c4
-rw-r--r--window-tree.c2
3 files changed, 7 insertions, 4 deletions
diff --git a/server-client.c b/server-client.c
index d179f6e8..d0ba617f 100644
--- a/server-client.c
+++ b/server-client.c
@@ -814,7 +814,7 @@ server_client_handle_key(struct client *c, key_code key)
struct timeval tv;
struct key_table *table, *first;
struct key_binding bd_find, *bd;
- int xtimeout;
+ int xtimeout, flags;
struct cmd_find_state fs;
/* Check the client is good to accept input. */
@@ -911,6 +911,7 @@ server_client_handle_key(struct client *c, key_code key)
server_status_client(c);
return;
}
+ flags = c->flags;
retry:
/* Log key table. */
@@ -988,7 +989,7 @@ retry:
* No match in the root table either. If this wasn't the first table
* tried, don't pass the key to the pane.
*/
- if (first != table) {
+ if (first != table && (~flags & CLIENT_REPEAT)) {
server_client_set_key_table(c, NULL);
server_status_client(c);
return;
diff --git a/tty.c b/tty.c
index 3d0e210b..77291daa 100644
--- a/tty.c
+++ b/tty.c
@@ -159,8 +159,10 @@ tty_read_callback(__unused int fd, __unused short events, void *data)
int nread;
nread = evbuffer_read(tty->in, tty->fd, -1);
- if (nread == -1)
+ if (nread == -1) {
+ event_del(&tty->event_in);
return;
+ }
log_debug("%s: read %d bytes (already %zu)", c->name, nread, size);
while (tty_keys_next(tty))
diff --git a/window-tree.c b/window-tree.c
index 36a19e48..363975e3 100644
--- a/window-tree.c
+++ b/window-tree.c
@@ -699,7 +699,7 @@ window_tree_key(struct window_pane *wp, struct client *c,
name = window_tree_get_target(item, &fs);
window_pane_reset_mode(wp);
if (name != NULL)
- mode_tree_run_command(c, &fs, command, name);
+ mode_tree_run_command(c, NULL, command, name);
free(name);
free(command);
return;