=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.278 retrieving revision 1.279 diff -c -r1.278 -r1.279 *** src/usr.bin/tmux/window-copy.c 2020/04/17 14:06:42 1.278 --- src/usr.bin/tmux/window-copy.c 2020/04/20 06:08:37 1.279 *************** *** 1,4 **** ! /* $OpenBSD: window-copy.c,v 1.278 2020/04/17 14:06:42 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-copy.c,v 1.279 2020/04/20 06:08:37 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 299,305 **** static struct screen * window_copy_clone_screen(struct screen *src, struct screen *hint, u_int *cx, ! u_int *cy) { struct screen *dst; u_int sy; --- 299,305 ---- static struct screen * window_copy_clone_screen(struct screen *src, struct screen *hint, u_int *cx, ! u_int *cy, int trim) { struct screen *dst; u_int sy; *************** *** 308,318 **** dst = xcalloc(1, sizeof *dst); sy = screen_hsize(src) + screen_size_y(src); ! while (sy > screen_hsize(src)) { ! gl = grid_peek_line(src->grid, sy - 1); ! if (gl->cellused != 0) ! break; ! sy--; } log_debug("%s: target screen is %ux%u, source %ux%u", __func__, screen_size_x(src), sy, screen_size_x(hint), --- 308,320 ---- dst = xcalloc(1, sizeof *dst); sy = screen_hsize(src) + screen_size_y(src); ! if (trim) { ! while (sy > screen_hsize(src)) { ! gl = grid_peek_line(src->grid, sy - 1); ! if (gl->cellused != 0) ! break; ! sy--; ! } } log_debug("%s: target screen is %ux%u, source %ux%u", __func__, screen_size_x(src), sy, screen_size_x(hint), *************** *** 386,392 **** u_int i, cx, cy; data = window_copy_common_init(wme); ! data->backing = window_copy_clone_screen(base, &data->screen, &cx, &cy); if (cy < screen_hsize(data->backing)) { data->cx = cx; --- 388,395 ---- u_int i, cx, cy; data = window_copy_common_init(wme); ! data->backing = window_copy_clone_screen(base, &data->screen, &cx, &cy, ! wme->swp != wme->wp); if (cy < screen_hsize(data->backing)) { data->cx = cx; *************** *** 2042,2048 **** screen_free(data->backing); free(data->backing); data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL, ! NULL); window_copy_size_changed(wme); return (WINDOW_COPY_CMD_REDRAW); --- 2045,2051 ---- screen_free(data->backing); free(data->backing); data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL, ! NULL, wme->swp != wme->wp); window_copy_size_changed(wme); return (WINDOW_COPY_CMD_REDRAW);