diff options
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/window-copy.c b/window-copy.c index dee4c1c4..efe102e6 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1,4 +1,4 @@ -/* $Id: window-copy.c,v 1.50 2009-02-13 21:39:45 nicm Exp $ */ +/* $Id: window-copy.c,v 1.51 2009-03-28 16:30:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -465,9 +465,9 @@ void window_copy_copy_line( struct window_pane *wp, char **buf, size_t *off, u_int sy, u_int sx, u_int ex) { - const struct grid_cell *gc; - u_int i, j, xx; - u_char data[4]; + u_int i, j, xx; + uint64_t text; + u_char data[4]; if (sx > ex) return; @@ -480,8 +480,8 @@ window_copy_copy_line( if (sx < ex) { for (i = sx; i < ex; i++) { - gc = grid_peek_cell(wp->base.grid, i, sy); - utf8_split(gc->data, data); + text = grid_peek_text(wp->base.grid, i, sy); + utf8_split(text, data); *buf = xrealloc(*buf, 1, (*off) + 4); for (j = 0; j < sizeof data; j++) { @@ -501,26 +501,28 @@ int window_copy_is_space(struct window_pane *wp, u_int px, u_int py) { const struct grid_cell *gc; - const char *spaces = " -_@"; + uint64_t text; + const char *spaces = " -_@"; gc = grid_peek_cell(wp->base.grid, px, py); if (gc->flags & GRID_FLAG_PADDING) return (0); - if (gc->data == 0x00 || gc->data > 0xff) + text = grid_peek_text(wp->base.grid, px, py); + if (text == 0x00 || text == 0x7f || text > 0xff) return (0); - return (strchr(spaces, gc->data) != NULL); + return (strchr(spaces, text) != NULL); } u_int window_copy_find_length(struct window_pane *wp, u_int py) { - const struct grid_cell *gc; - u_int px; + uint64_t text; + u_int px; px = wp->base.grid->size[py]; while (px > 0) { - gc = grid_peek_cell(wp->base.grid, px - 1, py); - if (gc->data != 0x20) + text = grid_peek_text(wp->base.grid, px - 1, py); + if (text != 0x20) break; px--; } |