From: Tung Nguyen Date: Thu, 17 Mar 2016 03:20:17 +0000 (+1100) Subject: Omit accel and select char from menu colors X-Git-Tag: NetHack-3.6.1_RC01~831^2~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ff96797a8a52d0917529f68f1a3e38dca2668e8;p=nethack Omit accel and select char from menu colors e.g. When there's "a - whatever", color the "whatever" part and leave the "a - " part unformatted. This matches the behavior of menu colors in NAO343. --- diff --git a/win/tty/wintty.c b/win/tty/wintty.c index 199474869..9c33a11b1 100644 --- a/win/tty/wintty.c +++ b/win/tty/wintty.c @@ -1777,6 +1777,15 @@ struct WinDesc *cw; page_lines++, curr = curr->next) { int color = NO_COLOR, attr = ATR_NONE; boolean menucolr = FALSE; + int select_pos = -1; /* -/+/# position for selectables */ + int format_start_pos = 0; /* menu color/attr start pos */ + + if (curr->identifier.a_void != 0) { + /* "a - whatever" */ + select_pos = 2; /* '-' */ + format_start_pos = 4; /* start of "whatever" */ + } + if (curr->selector) *rp++ = curr->selector; @@ -1793,27 +1802,31 @@ struct WinDesc *cw; * actually output the character. We're faster doing * this. */ - if (iflags.use_menu_color - && (menucolr = get_menu_coloring(curr->str, &color, - &attr))) { - term_start_attr(attr); -#ifdef TEXTCOLOR - if (color != NO_COLOR) - term_start_color(color); -#endif - } else - term_start_attr(curr->attr); for (n = 0, cp = curr->str; #ifndef WIN32CON *cp && (int) ++ttyDisplay->curx < (int) ttyDisplay->cols; - cp++, n++) + cp++, n++ #else *cp && (int) ttyDisplay->curx < (int) ttyDisplay->cols; - cp++, n++, ttyDisplay->curx++) + cp++, n++, ttyDisplay->curx++ +#endif + ) { + if (n == format_start_pos) { + if (iflags.use_menu_color + && (menucolr = get_menu_coloring(curr->str, + &color, + &attr))) { + term_start_attr(attr); +#ifdef TEXTCOLOR + if (color != NO_COLOR) + term_start_color(color); #endif - if (n == 2 && curr->identifier.a_void != 0 + } else + term_start_attr(curr->attr); + } + if (n == select_pos && curr->identifier.a_void != 0 && curr->selected) { if (curr->count == -1L) (void) putchar('+'); /* all selected */ @@ -1821,6 +1834,7 @@ struct WinDesc *cw; (void) putchar('#'); /* count selected */ } else (void) putchar(*cp); + } if (iflags.use_menu_color && menucolr) { #ifdef TEXTCOLOR if (color != NO_COLOR)