diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-04-17 16:01:33 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-04-17 16:01:33 +0100 |
commit | 7a21e911e1d2bdf95e4afb6ca3ae6de9e425c369 (patch) | |
tree | 771778ad079ecad2dc2a6d292bc1dec76aac1141 | |
parent | abeb31dd3d189dd3c880b1925b286c296ac5a869 (diff) | |
parent | 282a7a8d96877d4063fe16c5fbba03d95bc35008 (diff) | |
download | rtmux-7a21e911e1d2bdf95e4afb6ca3ae6de9e425c369.tar.gz rtmux-7a21e911e1d2bdf95e4afb6ca3ae6de9e425c369.tar.bz2 rtmux-7a21e911e1d2bdf95e4afb6ca3ae6de9e425c369.zip |
Merge branch 'obsd-master'
-rw-r--r-- | screen.c | 7 | ||||
-rw-r--r-- | tmux.h | 2 | ||||
-rw-r--r-- | window-copy.c | 12 |
3 files changed, 16 insertions, 5 deletions
@@ -229,7 +229,9 @@ screen_resize_cursor(struct screen *s, u_int sx, u_int sy, int reflow, cy = т *cy = s->grid->hsize + s->cy; - log_debug("%s: start %u,%u (%u,%u)", __func__, s->cx, s->cy, *cx, *cy); + log_debug("%s: new size %ux%u, now %ux%u (cursor %u,%u = %u,%u)", + __func__, sx, sy, screen_size_x(s), screen_size_y(s), s->cx, s->cy, + *cx, *cy); if (sx < 1) sx = 1; @@ -255,7 +257,8 @@ screen_resize_cursor(struct screen *s, u_int sx, u_int sy, int reflow, s->cx = 0; s->cy = 0; } - log_debug("%s: finish %u,%u (%u,%u)", __func__, s->cx, s->cy, *cx, *cy); + log_debug("%s: cursor finished at %u,%u = %u,%u", __func__, s->cx, + s->cy, *cx, *cy); } /* Resize screen. */ @@ -81,7 +81,7 @@ struct winlink; #define NAME_INTERVAL 500000 /* Maximum size of data to hold from a pane. */ -#define READ_SIZE 4096 +#define READ_SIZE 8192 /* Default pixel cell sizes. */ #define DEFAULT_XPIXEL 16 diff --git a/window-copy.c b/window-copy.c index bdf2c148..45a47675 100644 --- a/window-copy.c +++ b/window-copy.c @@ -314,14 +314,22 @@ window_copy_clone_screen(struct screen *src, struct screen *hint, u_int *cx, break; sy--; } + log_debug("%s: target screen is %ux%u, source %ux%u", __func__, + screen_size_x(src), sy, screen_size_x(hint), + screen_hsize(src) + screen_size_y(src)); screen_init(dst, screen_size_x(src), sy, screen_hlimit(src)); grid_duplicate_lines(dst->grid, 0, src->grid, 0, sy); dst->grid->sy = sy - screen_hsize(src); dst->grid->hsize = screen_hsize(src); dst->grid->hscrolled = src->grid->hscrolled; - dst->cx = src->cx; - dst->cy = src->cy; + if (src->cy > dst->grid->sy - 1) { + dst->cx = 0; + dst->cy = dst->grid->sy - 1; + } else { + dst->cx = src->cx; + dst->cy = src->cy; + } screen_resize_cursor(dst, screen_size_x(hint), screen_size_y(hint), 1, 0, cx, cy); |