1
0
mirror of https://github.com/tmux/tmux.git synced 2025-03-26 07:48:47 +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; *px = 0;
else if (strcmp(xp, "R") == 0) else if (strcmp(xp, "R") == 0)
*px = c->tty.sx - 1; *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) { else if (strcmp(xp, "P") == 0) {
tty_window_offset(&c->tty, &ox, &oy, &sx, &sy); tty_window_offset(&c->tty, &ox, &oy, &sx, &sy);
if (wp->xoff >= ox) 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'); yp = args_get(args, 'y');
if (yp == NULL) if (yp == NULL)
*py = 0; *py = 0;
else if (strcmp(yp, "C") == 0)
*py = (c->tty.sy - 1) / 2 + h / 2;
else if (strcmp(yp, "P") == 0) { else if (strcmp(yp, "P") == 0) {
tty_window_offset(&c->tty, &ox, &oy, &sx, &sy); tty_window_offset(&c->tty, &ox, &oy, &sx, &sy);
if (wp->yoff + wp->sy >= oy) 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; struct menu_item menu_item;
const char *key; const char *key;
char *title, *name; char *title, *name;
int flags, i; int flags = 0, i;
u_int px, py; u_int px, py;
if ((c = cmd_find_client(item, args_get(args, 'c'), 0)) == NULL) 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, cmd_display_menu_get_position(c, item, args, &px, &py, menu->width + 4,
menu->count + 2); menu->count + 2);
flags = 0;
if (!item->shared->mouse.valid) if (!item->shared->mouse.valid)
flags |= MENU_NOMOUSE; flags |= MENU_NOMOUSE;
if (menu_display(menu, flags, item, px, py, c, fs, NULL, NULL) != 0) 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: Both may be a row or column number, or one of the following special values:
.Bl -column "XXXXX" "XXXX" -offset indent .Bl -column "XXXXX" "XXXX" -offset indent
.It Sy "Value" Ta Sy "Flag" Ta Sy "Meaning" .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 "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 "P" Ta "Both" Ta "The bottom left of the pane"
.It Li "M" Ta "Both" Ta "The mouse position" .It Li "M" Ta "Both" Ta "The mouse position"