summaryrefslogtreecommitdiffstats
path: root/menu.c
diff options
context:
space:
mode:
authornicm <nicm>2022-05-31 10:22:42 +0000
committernicm <nicm>2022-05-31 10:22:42 +0000
commit86a184b288bca66ec62706f413b7c151cb0850a4 (patch)
tree698d09aa5e14b88a1ced4ec7b3e1ca2eaa2cdc42 /menu.c
parent58c8ea120943232887b2d4be53b77009c504af06 (diff)
Trim menu item text correctly, GitHub issue 3197.
Diffstat (limited to 'menu.c')
-rw-r--r--menu.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/menu.c b/menu.c
index c17d10b1..16120bed 100644
--- a/menu.c
+++ b/menu.c
@@ -56,7 +56,7 @@ menu_add_item(struct menu *menu, const struct menu_item *item,
{
struct menu_item *new_item;
const char *key = NULL, *cmd, *suffix = "";
- char *s, *name;
+ char *s, *trimmed, *name;
u_int width, max_width;
int line;
size_t keylen, slen;
@@ -103,11 +103,13 @@ menu_add_item(struct menu *menu, const struct menu_item *item,
max_width--;
suffix = ">";
}
- if (key != NULL)
- xasprintf(&name, "%.*s%s#[default] #[align=right](%s)",
- (int)max_width, s, suffix, key);
- else
- xasprintf(&name, "%.*s%s", (int)max_width, s, suffix);
+ trimmed = format_trim_right(s, max_width);
+ if (key != NULL) {
+ xasprintf(&name, "%s%s#[default] #[align=right](%s)",
+ trimmed, suffix, key);
+ } else
+ xasprintf(&name, "%s%s", trimmed, suffix);
+ free(trimmed);
new_item->name = name;
free(s);