more menu header tweaking re options
<color> off: map, menu items, menu headings, menu prompt/title all, everything should have color suppressed. <curses guicolor> on: map, menu items, menu headings, menu prompt/title can all feature color, as can menu borders, menu-selector letters. off: map, menu headings, menu prompt and menu items (menucolors on) can still feature color, but all other non-map features such as menu borders, menu-selector letters will not have color. <menucolors> on: menu items can have colors if they match one of the regex in config file; menu headings, menu prompt can also be in color (based on menu_headings option). off: menu items won't have colors, but menu headings, menu prompt still will feature colors (based on menu_headings option); those are not impacted by turning off menucolors.
This commit is contained in:
@@ -721,6 +721,7 @@ struct instance_globals_o {
|
||||
boolean opt_from_file;
|
||||
boolean opt_need_redraw; /* for doset() */
|
||||
boolean opt_need_glyph_reset;
|
||||
boolean opt_need_promptstyle;
|
||||
|
||||
/* pickup.c */
|
||||
int oldcap; /* last encumberance */
|
||||
|
||||
@@ -628,6 +628,7 @@ const struct instance_globals_o g_init_o = {
|
||||
FALSE, /* opt_from_file */
|
||||
FALSE, /* opt_need_redraw */
|
||||
FALSE, /* opt_need_glyph_reset */
|
||||
FALSE, /* opt_need_promptstyle */
|
||||
/* pickup.c */
|
||||
0, /* oldcap */
|
||||
/* restore.c */
|
||||
|
||||
@@ -5071,10 +5071,12 @@ optfn_boolean(int optidx, int req, boolean negated, char *opts, char *op)
|
||||
#endif
|
||||
go.opt_need_redraw = TRUE;
|
||||
go.opt_need_glyph_reset = TRUE;
|
||||
go.opt_need_promptstyle = TRUE;
|
||||
break;
|
||||
case opt_menucolors:
|
||||
case opt_guicolor:
|
||||
update_inventory();
|
||||
go.opt_need_promptstyle = TRUE;
|
||||
break;
|
||||
case opt_mention_decor:
|
||||
iflags.prev_decor = STONE;
|
||||
@@ -8693,6 +8695,8 @@ doset_simple(void)
|
||||
docrt();
|
||||
flush_screen(1);
|
||||
}
|
||||
if (go.opt_need_promptstyle)
|
||||
adjust_menu_promptstyle(WIN_INVEN, &iflags.menu_headings);
|
||||
if (gc.context.botl || gc.context.botlx) {
|
||||
bot();
|
||||
}
|
||||
@@ -8943,6 +8947,9 @@ doset(void) /* changing options via menu by Per Liboriussen */
|
||||
reglyph_darkroom();
|
||||
docrt();
|
||||
}
|
||||
if (go.opt_need_promptstyle) {
|
||||
adjust_menu_promptstyle(WIN_INVEN, &iflags.menu_headings);
|
||||
}
|
||||
if (gc.context.botl || gc.context.botlx) {
|
||||
bot();
|
||||
}
|
||||
|
||||
@@ -1602,10 +1602,12 @@ void
|
||||
adjust_menu_promptstyle(winid window, color_attr *style)
|
||||
{
|
||||
win_request_info wri = zerowri;
|
||||
wri.fromcore.menu_promptstyle.color = style->color;
|
||||
wri.fromcore.menu_promptstyle.color =
|
||||
(iflags.wc_color) ? style->color : NO_COLOR;
|
||||
wri.fromcore.menu_promptstyle.attr = style->attr;
|
||||
/* relay the style change to the window port */
|
||||
(void) ctrl_nhwindow(window, set_menu_promptstyle, &wri);
|
||||
go.opt_need_promptstyle = FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1626,13 +1628,15 @@ add_menu(
|
||||
const char *str, /* menu text */
|
||||
unsigned int itemflags) /* itemflags such as MENU_ITEMFLAGS_SELECTED */
|
||||
{
|
||||
if (iflags.use_menu_color) {
|
||||
if (iflags.wc_color && iflags.use_menu_color) {
|
||||
if ((itemflags & MENU_ITEMFLAGS_SKIPMENUCOLORS) == 0)
|
||||
(void) get_menu_coloring(str, &color, &attr);
|
||||
}
|
||||
/* this is the only function that cared about this flag; remove it now */
|
||||
itemflags &= ~MENU_ITEMFLAGS_SKIPMENUCOLORS;
|
||||
|
||||
if (!iflags.wc_color)
|
||||
color = NO_COLOR;
|
||||
(*windowprocs.win_add_menu)(window, glyphinfo, identifier,
|
||||
ch, gch, attr, color, str, itemflags);
|
||||
}
|
||||
|
||||
@@ -1209,10 +1209,10 @@ menu_display_page(
|
||||
|
||||
for (count = 0; count < num_lines; count++) {
|
||||
tmpstr = curses_break_str(menu->prompt, menu->width, count + 1);
|
||||
curses_toggle_color_attr(win, curses_menu_promptstyle.color,
|
||||
curses_menu_color_attr(win, curses_menu_promptstyle.color,
|
||||
curses_menu_promptstyle.attr, ON);
|
||||
mvwprintw(win, count + 1, 1, "%s", tmpstr);
|
||||
curses_toggle_color_attr(win, curses_menu_promptstyle.color,
|
||||
curses_menu_color_attr(win, curses_menu_promptstyle.color,
|
||||
curses_menu_promptstyle.attr, OFF);
|
||||
free(tmpstr);
|
||||
}
|
||||
|
||||
@@ -169,7 +169,8 @@ curses_menu_color_attr(WINDOW *win, int color, int attr, int onoff)
|
||||
/* curses_toggle_color_attr() uses 'guicolor' to decide whether to
|
||||
honor specified color, but menu windows have their own
|
||||
more-specific control, 'menucolors', so override with that here */
|
||||
iflags.wc2_guicolor = iflags.use_menu_color;
|
||||
/* iflags.wc2_guicolor = iflags.use_menu_color; */
|
||||
iflags.wc2_guicolor = (color != NONE);
|
||||
curses_toggle_color_attr(win, color, attr, onoff);
|
||||
iflags.wc2_guicolor = save_guicolor;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user