=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-tree.c,v retrieving revision 1.18 retrieving revision 1.19 diff -c -r1.18 -r1.19 *** src/usr.bin/tmux/window-tree.c 2017/10/11 08:08:16 1.18 --- src/usr.bin/tmux/window-tree.c 2017/10/11 12:57:49 1.19 *************** *** 1,4 **** ! /* $OpenBSD: window-tree.c,v 1.18 2017/10/11 08:08:16 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-tree.c,v 1.19 2017/10/11 12:57:49 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott *************** *** 442,448 **** --- 442,470 ---- } } + static void + window_tree_draw_label(struct screen_write_ctx *ctx, u_int px, u_int py, + u_int sx, u_int sy, const struct grid_cell *gc, const char *label) + { + size_t len; + u_int ox, oy; + + len = strlen(label); + if (sx == 0 || sy == 1 || len > sx) + return; + ox = (sx - len + 1) / 2; + oy = (sy + 1) / 2; + + if (ox > 1 && ox + len < sx - 1 && sy >= 3) { + screen_write_cursormove(ctx, px + ox - 1, py + oy - 1); + screen_write_box(ctx, len + 2, 3); + } + screen_write_cursormove(ctx, px + ox, py + oy); + screen_write_puts(ctx, gc, "%s", label); + } + + static void window_tree_draw_session(struct window_tree_modedata *data, struct session *s, struct screen_write_ctx *ctx, u_int sx, u_int sy) { *************** *** 454,460 **** struct grid_cell gc; int colour, active_colour, left, right; char *label; - size_t len; total = winlink_count(&s->windows); --- 476,481 ---- *************** *** 554,563 **** xasprintf(&label, " %u:%s ", wl->idx, w->name); if (strlen(label) > width) xasprintf(&label, " %u ", wl->idx); ! len = strlen(label) / 2; ! screen_write_cursormove(ctx, offset + (each / 2) - len, sy / 2); ! if (len < width) ! screen_write_puts(ctx, &gc, "%s", label); free(label); if (loop != end - 1) { --- 575,581 ---- xasprintf(&label, " %u:%s ", wl->idx, w->name); if (strlen(label) > width) xasprintf(&label, " %u ", wl->idx); ! window_tree_draw_label(ctx, offset, 0, width, sy, &gc, label); free(label); if (loop != end - 1) { *************** *** 581,587 **** struct grid_cell gc; int colour, active_colour, left, right; char *label; - size_t len; total = window_count_panes(w); --- 599,604 ---- *************** *** 678,687 **** screen_write_preview(ctx, &wp->base, width, sy); xasprintf(&label, " %u ", loop); ! len = strlen(label) / 2; ! screen_write_cursormove(ctx, offset + (each / 2) - len, sy / 2); ! if (len < width) ! screen_write_puts(ctx, &gc, "%s", label); free(label); if (loop != end - 1) { --- 695,701 ---- screen_write_preview(ctx, &wp->base, width, sy); xasprintf(&label, " %u ", loop); ! window_tree_draw_label(ctx, offset, 0, each, sy, &gc, label); free(label); if (loop != end - 1) {