1
0
mirror of https://github.com/tmux/tmux.git synced 2025-03-23 14:19:04 +00:00

Add C position for terminal centre with display-menu -x and -y.

This commit is contained in:
nicm 2020-03-19 13:32:49 +00:00
parent 2cd8ea7680
commit 581ed718e7
2 changed files with 6 additions and 2 deletions

View File

@ -60,6 +60,8 @@ cmd_display_menu_get_position(struct client *c, struct cmdq_item *item,
*px = 0;
else if (strcmp(xp, "R") == 0)
*px = c->tty.sx - 1;
else if (strcmp(xp, "C") == 0)
*px = (c->tty.sx - 1) / 2 - w / 2;
else if (strcmp(xp, "P") == 0) {
tty_window_offset(&c->tty, &ox, &oy, &sx, &sy);
if (wp->xoff >= ox)
@ -94,6 +96,8 @@ cmd_display_menu_get_position(struct client *c, struct cmdq_item *item,
yp = args_get(args, 'y');
if (yp == NULL)
*py = 0;
else if (strcmp(yp, "C") == 0)
*py = (c->tty.sy - 1) / 2 + h / 2;
else if (strcmp(yp, "P") == 0) {
tty_window_offset(&c->tty, &ox, &oy, &sx, &sy);
if (wp->yoff + wp->sy >= oy)
@ -132,7 +136,7 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
struct menu_item menu_item;
const char *key;
char *title, *name;
int flags, i;
int flags = 0, i;
u_int px, py;
if ((c = cmd_find_client(item, args_get(args, 'c'), 0)) == NULL)
@ -180,7 +184,6 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
cmd_display_menu_get_position(c, item, args, &px, &py, menu->width + 4,
menu->count + 2);
flags = 0;
if (!item->shared->mouse.valid)
flags |= MENU_NOMOUSE;
if (menu_display(menu, flags, item, px, py, c, fs, NULL, NULL) != 0)

1
tmux.1
View File

@ -4918,6 +4918,7 @@ give the position of the menu.
Both may be a row or column number, or one of the following special values:
.Bl -column "XXXXX" "XXXX" -offset indent
.It Sy "Value" Ta Sy "Flag" Ta Sy "Meaning"
.It Li "C" Ta "Both" Ta "The centre of the terminal"
.It Li "R" Ta Fl x Ta "The right side of the terminal"
.It Li "P" Ta "Both" Ta "The bottom left of the pane"
.It Li "M" Ta "Both" Ta "The mouse position"