From 3b349afa0c00ef0cbcb3de75ab6f70747bb890b2 Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 11 Dec 2011 01:32:00 +0200 Subject: frontend: menu: limit enum text length --- frontend/common/menu.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'frontend/common') diff --git a/frontend/common/menu.c b/frontend/common/menu.c index 1513d39..d76eda4 100644 --- a/frontend/common/menu.c +++ b/frontend/common/menu.c @@ -482,7 +482,7 @@ static void me_draw(const menu_entry *entries, int sel, void (*draw_more)(void)) for (ent = entries; ent->name; ent++) { const char **names; - int len; + int len, leftname_end = 0; if (!ent->enabled) continue; @@ -492,8 +492,10 @@ static void me_draw(const menu_entry *entries, int sel, void (*draw_more)(void)) if (ent->generate_name) name = ent->generate_name(ent->id, &offs); } - if (name != NULL) + if (name != NULL) { text_out16(x, y, name); + leftname_end = x + (strlen(name) + 1) * me_mfont_w; + } switch (ent->beh) { case MB_NONE: @@ -516,13 +518,15 @@ static void me_draw(const menu_entry *entries, int sel, void (*draw_more)(void)) break; case MB_OPT_ENUM: names = (const char **)ent->data; - offs = 0; for (i = 0; names[i] != NULL; i++) { + offs = x + col2_offs; len = strlen(names[i]); if (len > 10) - offs = 10 - len - 2; + offs += (10 - len - 2) * me_mfont_w; + if (offs < leftname_end) + offs = leftname_end; if (i == *(unsigned char *)ent->var) { - text_out16(x + col2_offs + offs * me_mfont_w, y, "%s", names[i]); + text_out16(offs, y, "%s", names[i]); break; } } -- cgit v1.2.3