diff options
author | Thomas Adam <thomas@xteddy.org> | 2023-01-12 22:01:09 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2023-01-12 22:01:09 +0000 |
commit | 42895efac3f19bc61dcfbe094d434256f02306b8 (patch) | |
tree | c8d81910b5dd75f3d2171370830798c3ea3e467a /server-client.c | |
parent | 9b1ea8b16d53a73c1dcd0ca020a45e9d1dd08ac6 (diff) | |
parent | 483cc77c1cbc6898fef143c8100945139c14a92c (diff) | |
download | rtmux-42895efac3f19bc61dcfbe094d434256f02306b8.tar.gz rtmux-42895efac3f19bc61dcfbe094d434256f02306b8.tar.bz2 rtmux-42895efac3f19bc61dcfbe094d434256f02306b8.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/server-client.c b/server-client.c index c5591055..5bb7d878 100644 --- a/server-client.c +++ b/server-client.c @@ -42,6 +42,7 @@ static void server_client_check_modes(struct client *); static void server_client_set_title(struct client *); static void server_client_set_path(struct client *); static void server_client_reset_state(struct client *); +static int server_client_is_bracket_pasting(struct client *, key_code); static int server_client_assume_paste(struct session *); static void server_client_update_latest(struct client *); @@ -1754,6 +1755,25 @@ out: return (key); } +/* Is this a bracket paste key? */ +static int +server_client_is_bracket_pasting(struct client *c, key_code key) +{ + if (key == KEYC_PASTE_START) { + c->flags |= CLIENT_BRACKETPASTING; + log_debug("%s: bracket paste on", c->name); + return (1); + } + + if (key == KEYC_PASTE_END) { + c->flags &= ~CLIENT_BRACKETPASTING; + log_debug("%s: bracket paste off", c->name); + return (1); + } + + return !!(c->flags & CLIENT_BRACKETPASTING); +} + /* Is this fast enough to probably be a paste? */ static int server_client_assume_paste(struct session *s) @@ -1862,6 +1882,10 @@ server_client_key_callback(struct cmdq_item *item, void *data) if (KEYC_IS_MOUSE(key) && !options_get_number(s->options, "mouse")) goto forward_key; + /* Forward if bracket pasting. */ + if (server_client_is_bracket_pasting(c, key)) + goto forward_key; + /* Treat everything as a regular key when pasting is detected. */ if (!KEYC_IS_MOUSE(key) && server_client_assume_paste(s)) goto forward_key; |