diff --git a/menu.c b/menu.c index 049c4836..f70b1d18 100644 --- a/menu.c +++ b/menu.c @@ -295,6 +295,10 @@ menu_display(struct menu *menu, int flags, struct cmdq_item *item, u_int px, if (c->tty.sx < menu->width + 4 || c->tty.sy < menu->count + 2) return (-1); + if (px + menu->width + 4 > c->tty.sx) + px = c->tty.sx - menu->width - 4; + if (py + menu->count + 2 > c->tty.sy) + py = c->tty.sy - menu->count - 2; md = xcalloc(1, sizeof *md); md->item = item; diff --git a/mode-tree.c b/mode-tree.c index b9fa5f65..843a74bc 100644 --- a/mode-tree.c +++ b/mode-tree.c @@ -847,6 +847,10 @@ mode_tree_display_menu(struct mode_tree_data *mtd, struct client *c, u_int x, mtm->itemdata = mti->itemdata; mtd->references++; + if (x >= (menu->width + 4) / 2) + x -= (menu->width + 4) / 2; + else + x = 0; if (menu_display(menu, 0, NULL, x, y, c, NULL, mode_tree_menu_callback, mtm) != 0) menu_free(menu); diff --git a/window-tree.c b/window-tree.c index d163dd9e..4d5b4a1e 100644 --- a/window-tree.c +++ b/window-tree.c @@ -54,8 +54,8 @@ static void window_tree_key(struct window_mode_entry *, "}" static const struct menu_item window_tree_menu_items[] = { - { "Select", 'E', NULL }, - { "Expand", 'R', NULL }, + { "Select", '\r', NULL }, + { "Expand", KEYC_RIGHT, NULL }, { "", KEYC_NONE, NULL }, { "Tag", 't', NULL }, { "Tag All", '\024', NULL },