diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-03-07 20:02:41 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-03-07 20:02:41 +0000 |
commit | a1009e7bd3c4acd7dc4157e317013f066d1deca8 (patch) | |
tree | 4b078a40fadb0fc7007ff12ec00be61045bca5de /window-copy.c | |
parent | 5a564a0c1ac768d6fc02669891fdcbd2487af0e8 (diff) | |
parent | 3c24bc5617bfdf90f94cc088f3769397c7569649 (diff) | |
download | rtmux-a1009e7bd3c4acd7dc4157e317013f066d1deca8.tar.gz rtmux-a1009e7bd3c4acd7dc4157e317013f066d1deca8.tar.bz2 rtmux-a1009e7bd3c4acd7dc4157e317013f066d1deca8.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/window-copy.c b/window-copy.c index 65b29df0..a79e3bf4 100644 --- a/window-copy.c +++ b/window-copy.c @@ -31,10 +31,11 @@ static void window_copy_command(struct window_pane *, struct client *, static struct screen *window_copy_init(struct window_pane *, struct cmd_find_state *, struct args *); static void window_copy_free(struct window_pane *); +static void window_copy_resize(struct window_pane *, u_int, u_int); +static void window_copy_formats(struct window_pane *, struct format_tree *); static int window_copy_pagedown(struct window_pane *, int, int); static void window_copy_next_paragraph(struct window_pane *); static void window_copy_previous_paragraph(struct window_pane *); -static void window_copy_resize(struct window_pane *, u_int, u_int); static void window_copy_redraw_selection(struct window_pane *, u_int); static void window_copy_redraw_lines(struct window_pane *, u_int, u_int); @@ -113,6 +114,7 @@ const struct window_mode window_copy_mode = { .resize = window_copy_resize, .key_table = window_copy_key_table, .command = window_copy_command, + .formats = window_copy_formats, }; enum { @@ -261,6 +263,12 @@ window_copy_init_for_output(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; + if (wp->mode == &window_copy_mode && data->backing != &wp->base) + return; + window_pane_reset_mode(wp); + window_pane_set_mode(wp, &window_copy_mode, NULL, NULL); + + data = wp->modedata; data->backing = xmalloc(sizeof *data->backing); screen_init(data->backing, screen_size_x(&wp->base), screen_size_y(&wp->base), UINT_MAX); @@ -473,6 +481,16 @@ window_copy_next_paragraph(struct window_pane *wp) } static void +window_copy_formats(struct window_pane *wp, struct format_tree *ft) +{ + struct window_copy_mode_data *data = wp->modedata; + + format_add(ft, "selection_present", "%d", data->screen.sel != NULL); + format_add(ft, "scroll_position", "%d", data->oy); + format_add(ft, "rectangle_toggle", "%d", data->rectflag); +} + +static void window_copy_resize(struct window_pane *wp, u_int sx, u_int sy) { struct window_copy_mode_data *data = wp->modedata; @@ -2447,19 +2465,6 @@ window_copy_scroll_down(struct window_pane *wp, u_int ny) screen_write_stop(&ctx); } -void -window_copy_add_formats(struct window_pane *wp, struct format_tree *ft) -{ - struct window_copy_mode_data *data = wp->modedata; - - if (wp->mode != &window_copy_mode) - return; - - format_add(ft, "selection_present", "%d", data->screen.sel != NULL); - format_add(ft, "scroll_position", "%d", data->oy); - format_add(ft, "rectangle_toggle", "%d", data->rectflag); -} - static void window_copy_rectangle_toggle(struct window_pane *wp) { |