=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/tty-keys.c,v retrieving revision 1.153 retrieving revision 1.154 diff -c -r1.153 -r1.154 *** src/usr.bin/tmux/tty-keys.c 2022/02/16 18:55:05 1.153 --- src/usr.bin/tmux/tty-keys.c 2022/03/08 12:01:19 1.154 *************** *** 1,4 **** ! /* $OpenBSD: tty-keys.c,v 1.153 2022/02/16 18:55:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: tty-keys.c,v 1.154 2022/03/08 12:01:19 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 1154,1165 **** * partial. */ static int ! tty_keys_clipboard(__unused struct tty *tty, const char *buf, size_t len, ! size_t *size) { ! size_t end, terminator, needed; ! char *copy, *out; ! int outlen; *size = 0; --- 1154,1167 ---- * partial. */ static int ! tty_keys_clipboard(struct tty *tty, const char *buf, size_t len, size_t *size) { ! struct client *c = tty->client; ! struct window_pane *wp; ! size_t end, terminator, needed; ! char *copy, *out; ! int outlen; ! u_int i; *size = 0; *************** *** 1221,1226 **** --- 1223,1229 ---- if (~tty->flags & TTY_OSC52QUERY) return (0); tty->flags &= ~TTY_OSC52QUERY; + evtimer_del(&tty->clipboard_timer); /* It has to be a string so copy it. */ copy = xmalloc(end + 1); *************** *** 1237,1245 **** } free(copy); ! /* Create a new paste buffer. */ log_debug("%s: %.*s", __func__, outlen, out); ! paste_add(NULL, out, outlen); return (0); } --- 1240,1259 ---- } free(copy); ! /* Create a new paste buffer and forward to panes. */ log_debug("%s: %.*s", __func__, outlen, out); ! if (c->flags & CLIENT_CLIPBOARDBUFFER) { ! paste_add(NULL, out, outlen); ! c->flags &= ~CLIENT_CLIPBOARDBUFFER; ! } ! for (i = 0; i < c->clipboard_npanes; i++) { ! wp = window_pane_find_by_id(c->clipboard_panes[i]); ! if (wp != NULL) ! input_reply_clipboard(wp->event, out, outlen, "\033\\"); ! } ! free(c->clipboard_panes); ! c->clipboard_panes = NULL; ! c->clipboard_npanes = 0; return (0); }