Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -46,6 +46,12 @@ wishing for "glob of grey ooze" failed even though grey ooze is recognized
|
|||||||
as a variant spelling for gray ooze
|
as a variant spelling for gray ooze
|
||||||
spells of healing and extra healing cast at monsters handled monster blindness
|
spells of healing and extra healing cast at monsters handled monster blindness
|
||||||
inconsistently compared to other healing
|
inconsistently compared to other healing
|
||||||
|
when using the 'O' command to create a status highlight that specifies
|
||||||
|
multiple attributes (blink+inverse, &c), pick all of them in one menu
|
||||||
|
selection and create a single hilite_status rule instead of having
|
||||||
|
separate rules for each attribute to be merged when highlighting
|
||||||
|
highlighting status conditions would fail to use attributes if a rule with
|
||||||
|
them was followed by another one without (color only or color&normal)
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
90
src/botl.c
90
src/botl.c
@@ -2156,6 +2156,7 @@ const char *str;
|
|||||||
if (!nmatches) {
|
if (!nmatches) {
|
||||||
/* check partial matches to aliases */
|
/* check partial matches to aliases */
|
||||||
int len = (int) strlen(str);
|
int len = (int) strlen(str);
|
||||||
|
|
||||||
for (i = 0; i < SIZE(condition_aliases); i++)
|
for (i = 0; i < SIZE(condition_aliases); i++)
|
||||||
if (!strncmpi(str, condition_aliases[i].id, len)) {
|
if (!strncmpi(str, condition_aliases[i].id, len)) {
|
||||||
mask |= condition_aliases[i].bitmask;
|
mask |= condition_aliases[i].bitmask;
|
||||||
@@ -2282,11 +2283,11 @@ int sidx;
|
|||||||
else if (a == ATR_BOLD)
|
else if (a == ATR_BOLD)
|
||||||
cond_hilites[HL_ATTCLR_BOLD] |= conditions_bitmask;
|
cond_hilites[HL_ATTCLR_BOLD] |= conditions_bitmask;
|
||||||
else if (a == ATR_NONE) {
|
else if (a == ATR_NONE) {
|
||||||
cond_hilites[HL_ATTCLR_DIM] = 0UL;
|
cond_hilites[HL_ATTCLR_DIM] &= ~conditions_bitmask;
|
||||||
cond_hilites[HL_ATTCLR_BLINK] = 0UL;
|
cond_hilites[HL_ATTCLR_BLINK] &= ~conditions_bitmask;
|
||||||
cond_hilites[HL_ATTCLR_ULINE] = 0UL;
|
cond_hilites[HL_ATTCLR_ULINE] &= ~conditions_bitmask;
|
||||||
cond_hilites[HL_ATTCLR_INVERSE] = 0UL;
|
cond_hilites[HL_ATTCLR_INVERSE] &= ~conditions_bitmask;
|
||||||
cond_hilites[HL_ATTCLR_BOLD] = 0UL;
|
cond_hilites[HL_ATTCLR_BOLD] &= ~conditions_bitmask;
|
||||||
} else {
|
} else {
|
||||||
int k = match_str2clr(subfields[i]);
|
int k = match_str2clr(subfields[i]);
|
||||||
|
|
||||||
@@ -2335,7 +2336,7 @@ char *buf;
|
|||||||
int k, first = 0;
|
int k, first = 0;
|
||||||
|
|
||||||
attbuf[0] = '\0';
|
attbuf[0] = '\0';
|
||||||
if (attrib & HL_NONE) {
|
if (attrib == HL_NONE) {
|
||||||
Strcpy(buf, "normal");
|
Strcpy(buf, "normal");
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@@ -2383,8 +2384,9 @@ const char *str;
|
|||||||
|
|
||||||
tmp = (struct _status_hilite_line_str *) alloc(sizeof *tmp);
|
tmp = (struct _status_hilite_line_str *) alloc(sizeof *tmp);
|
||||||
(void) memset(tmp, 0, sizeof *tmp);
|
(void) memset(tmp, 0, sizeof *tmp);
|
||||||
|
tmp->next = (struct _status_hilite_line_str *) 0;
|
||||||
|
|
||||||
++status_hilite_str_id;
|
tmp->id = ++status_hilite_str_id;
|
||||||
tmp->fld = fld;
|
tmp->fld = fld;
|
||||||
tmp->hl = hl;
|
tmp->hl = hl;
|
||||||
tmp->mask = mask;
|
tmp->mask = mask;
|
||||||
@@ -2392,14 +2394,12 @@ const char *str;
|
|||||||
Strcpy(tmp->str, str);
|
Strcpy(tmp->str, str);
|
||||||
else
|
else
|
||||||
(void) stripchars(tmp->str, " ", str);
|
(void) stripchars(tmp->str, " ", str);
|
||||||
tmp->id = status_hilite_str_id;
|
|
||||||
|
|
||||||
if ((nxt = status_hilite_str) != 0) {
|
if ((nxt = status_hilite_str) != 0) {
|
||||||
while (nxt->next)
|
while (nxt->next)
|
||||||
nxt = nxt->next;
|
nxt = nxt->next;
|
||||||
nxt->next = tmp;
|
nxt->next = tmp;
|
||||||
} else {
|
} else {
|
||||||
tmp->next = (struct _status_hilite_line_str *) 0;
|
|
||||||
status_hilite_str = tmp;
|
status_hilite_str = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2462,8 +2462,10 @@ status_hilite_linestr_gather_conditions()
|
|||||||
int j;
|
int j;
|
||||||
|
|
||||||
for (j = 0; j < CLR_MAX; j++)
|
for (j = 0; j < CLR_MAX; j++)
|
||||||
if (cond_hilites[j] & valid_conditions[i].bitmask)
|
if (cond_hilites[j] & valid_conditions[i].bitmask) {
|
||||||
clr = j;
|
clr = j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (cond_hilites[HL_ATTCLR_DIM] & valid_conditions[i].bitmask)
|
if (cond_hilites[HL_ATTCLR_DIM] & valid_conditions[i].bitmask)
|
||||||
atr |= HL_DIM;
|
atr |= HL_DIM;
|
||||||
if (cond_hilites[HL_ATTCLR_BOLD] & valid_conditions[i].bitmask)
|
if (cond_hilites[HL_ATTCLR_BOLD] & valid_conditions[i].bitmask)
|
||||||
@@ -2474,6 +2476,8 @@ status_hilite_linestr_gather_conditions()
|
|||||||
atr |= HL_ULINE;
|
atr |= HL_ULINE;
|
||||||
if (cond_hilites[HL_ATTCLR_INVERSE] & valid_conditions[i].bitmask)
|
if (cond_hilites[HL_ATTCLR_INVERSE] & valid_conditions[i].bitmask)
|
||||||
atr |= HL_INVERSE;
|
atr |= HL_INVERSE;
|
||||||
|
if (atr != HL_NONE)
|
||||||
|
atr &= ~HL_NONE;
|
||||||
|
|
||||||
if (clr != NO_COLOR || atr != HL_NONE) {
|
if (clr != NO_COLOR || atr != HL_NONE) {
|
||||||
unsigned long ca = clr | (atr << 8);
|
unsigned long ca = clr | (atr << 8);
|
||||||
@@ -2507,7 +2511,8 @@ status_hilite_linestr_gather_conditions()
|
|||||||
char condbuf[BUFSZ];
|
char condbuf[BUFSZ];
|
||||||
char *tmpattr;
|
char *tmpattr;
|
||||||
|
|
||||||
(void) stripchars(clrbuf, " ", clr2colorname(clr));
|
(void) strNsubst(strcpy(clrbuf, clr2colorname(clr)),
|
||||||
|
" ", "-", 0);
|
||||||
tmpattr = hlattr2attrname(atr, attrbuf, BUFSZ);
|
tmpattr = hlattr2attrname(atr, attrbuf, BUFSZ);
|
||||||
if (tmpattr)
|
if (tmpattr)
|
||||||
Sprintf(eos(clrbuf), "&%s", tmpattr);
|
Sprintf(eos(clrbuf), "&%s", tmpattr);
|
||||||
@@ -2608,14 +2613,10 @@ struct hilite_s *hl;
|
|||||||
}
|
}
|
||||||
|
|
||||||
split_clridx(hl->coloridx, &clr, &attr);
|
split_clridx(hl->coloridx, &clr, &attr);
|
||||||
if (clr != NO_COLOR)
|
(void) strNsubst(strcpy(clrbuf, clr2colorname(clr)), " ", "-", 0);
|
||||||
(void) stripchars(clrbuf, " ", clr2colorname(clr));
|
|
||||||
if (attr != HL_UNDEF) {
|
if (attr != HL_UNDEF) {
|
||||||
tmpattr = hlattr2attrname(attr, attrbuf, BUFSZ);
|
if ((tmpattr = hlattr2attrname(attr, attrbuf, BUFSZ)) != 0)
|
||||||
if (tmpattr)
|
Sprintf(eos(clrbuf), "&%s", tmpattr);
|
||||||
Sprintf(eos(clrbuf), "%s%s",
|
|
||||||
(clr != NO_COLOR) ? "&" : "",
|
|
||||||
tmpattr);
|
|
||||||
}
|
}
|
||||||
Sprintf(buf, "%s/%s/%s", initblstats[hl->fld].fldname, behavebuf, clrbuf);
|
Sprintf(buf, "%s/%s/%s", initblstats[hl->fld].fldname, behavebuf, clrbuf);
|
||||||
|
|
||||||
@@ -2849,6 +2850,7 @@ choose_field:
|
|||||||
attrqry[0] = '\0';
|
attrqry[0] = '\0';
|
||||||
|
|
||||||
memset((genericptr_t) &hilite, 0, sizeof (struct hilite_s));
|
memset((genericptr_t) &hilite, 0, sizeof (struct hilite_s));
|
||||||
|
hilite.next = (struct hilite_s *) 0;
|
||||||
hilite.set = FALSE; /* mark it "unset" */
|
hilite.set = FALSE; /* mark it "unset" */
|
||||||
hilite.fld = fld;
|
hilite.fld = fld;
|
||||||
|
|
||||||
@@ -3154,52 +3156,34 @@ choose_color:
|
|||||||
else
|
else
|
||||||
goto choose_behavior;
|
goto choose_behavior;
|
||||||
}
|
}
|
||||||
|
atr = query_attr(attrqry);
|
||||||
atr = query_attr(attrqry); /* FIXME: pick multiple attrs */
|
|
||||||
if (atr == -1)
|
if (atr == -1)
|
||||||
goto choose_color;
|
goto choose_color;
|
||||||
if (atr == ATR_DIM)
|
|
||||||
atr = HL_DIM;
|
|
||||||
else if (atr == ATR_BLINK)
|
|
||||||
atr = HL_BLINK;
|
|
||||||
else if (atr == ATR_ULINE)
|
|
||||||
atr = HL_ULINE;
|
|
||||||
else if (atr == ATR_INVERSE)
|
|
||||||
atr = HL_INVERSE;
|
|
||||||
else if (atr == ATR_BOLD)
|
|
||||||
atr = HL_BOLD;
|
|
||||||
else if (atr == ATR_NONE)
|
|
||||||
atr = HL_NONE;
|
|
||||||
else
|
|
||||||
atr = HL_UNDEF;
|
|
||||||
|
|
||||||
if (clr == -1)
|
|
||||||
clr = NO_COLOR;
|
|
||||||
|
|
||||||
if (behavior == BL_TH_CONDITION) {
|
if (behavior == BL_TH_CONDITION) {
|
||||||
char clrbuf[BUFSZ];
|
char clrbuf[BUFSZ];
|
||||||
char attrbuf[BUFSZ];
|
char attrbuf[BUFSZ];
|
||||||
char *tmpattr;
|
char *tmpattr;
|
||||||
|
|
||||||
if (atr == HL_DIM)
|
if (atr & HL_DIM)
|
||||||
cond_hilites[HL_ATTCLR_DIM] |= cond;
|
cond_hilites[HL_ATTCLR_DIM] |= cond;
|
||||||
else if (atr == HL_BLINK)
|
else if (atr & HL_BLINK)
|
||||||
cond_hilites[HL_ATTCLR_BLINK] |= cond;
|
cond_hilites[HL_ATTCLR_BLINK] |= cond;
|
||||||
else if (atr == HL_ULINE)
|
else if (atr & HL_ULINE)
|
||||||
cond_hilites[HL_ATTCLR_ULINE] |= cond;
|
cond_hilites[HL_ATTCLR_ULINE] |= cond;
|
||||||
else if (atr == HL_INVERSE)
|
else if (atr & HL_INVERSE)
|
||||||
cond_hilites[HL_ATTCLR_INVERSE] |= cond;
|
cond_hilites[HL_ATTCLR_INVERSE] |= cond;
|
||||||
else if (atr == HL_BOLD)
|
else if (atr & HL_BOLD)
|
||||||
cond_hilites[HL_ATTCLR_BOLD] |= cond;
|
cond_hilites[HL_ATTCLR_BOLD] |= cond;
|
||||||
else if (atr == HL_NONE) {
|
else if (atr == HL_NONE) {
|
||||||
cond_hilites[HL_ATTCLR_DIM] = 0UL;
|
cond_hilites[HL_ATTCLR_DIM] &= ~cond;
|
||||||
cond_hilites[HL_ATTCLR_BLINK] = 0UL;
|
cond_hilites[HL_ATTCLR_BLINK] &= ~cond;
|
||||||
cond_hilites[HL_ATTCLR_ULINE] = 0UL;
|
cond_hilites[HL_ATTCLR_ULINE] &= ~cond;
|
||||||
cond_hilites[HL_ATTCLR_INVERSE] = 0UL;
|
cond_hilites[HL_ATTCLR_INVERSE] &= ~cond;
|
||||||
cond_hilites[HL_ATTCLR_BOLD] = 0UL;
|
cond_hilites[HL_ATTCLR_BOLD] &= ~cond;
|
||||||
}
|
}
|
||||||
cond_hilites[clr] |= cond;
|
cond_hilites[clr] |= cond;
|
||||||
(void) stripchars(clrbuf, " ", clr2colorname(clr));
|
(void) strNsubst(strcpy(clrbuf, clr2colorname(clr)), " ", "-", 0);
|
||||||
tmpattr = hlattr2attrname(atr, attrbuf, BUFSZ);
|
tmpattr = hlattr2attrname(atr, attrbuf, BUFSZ);
|
||||||
if (tmpattr)
|
if (tmpattr)
|
||||||
Sprintf(eos(clrbuf), "&%s", tmpattr);
|
Sprintf(eos(clrbuf), "&%s", tmpattr);
|
||||||
@@ -3264,14 +3248,14 @@ int id;
|
|||||||
if (hl) {
|
if (hl) {
|
||||||
while (hl) {
|
while (hl) {
|
||||||
if (hlstr->hl == hl) {
|
if (hlstr->hl == hl) {
|
||||||
if (hlprev)
|
if (hlprev) {
|
||||||
hlprev->next = hl->next;
|
hlprev->next = hl->next;
|
||||||
else {
|
} else {
|
||||||
blstats[0][fld].thresholds = hl->next;
|
blstats[0][fld].thresholds = hl->next;
|
||||||
blstats[1][fld].thresholds =
|
blstats[1][fld].thresholds =
|
||||||
blstats[0][fld].thresholds;
|
blstats[0][fld].thresholds;
|
||||||
}
|
}
|
||||||
free(hl);
|
free((genericptr_t) hl);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
hlprev = hl;
|
hlprev = hl;
|
||||||
@@ -3340,14 +3324,15 @@ int fld;
|
|||||||
add_menu(tmpwin, NO_GLYPH, &any, 'Z', 0, ATR_NONE,
|
add_menu(tmpwin, NO_GLYPH, &any, 'Z', 0, ATR_NONE,
|
||||||
"Add a new hilite", MENU_UNSELECTED);
|
"Add a new hilite", MENU_UNSELECTED);
|
||||||
|
|
||||||
|
|
||||||
Sprintf(buf, "Current %s hilites:", initblstats[fld].fldname);
|
Sprintf(buf, "Current %s hilites:", initblstats[fld].fldname);
|
||||||
end_menu(tmpwin, buf);
|
end_menu(tmpwin, buf);
|
||||||
|
|
||||||
if ((res = select_menu(tmpwin, PICK_ANY, &picks)) > 0) {
|
if ((res = select_menu(tmpwin, PICK_ANY, &picks)) > 0) {
|
||||||
int mode = 0;
|
int mode = 0;
|
||||||
|
|
||||||
for (i = 0; i < res; i++) {
|
for (i = 0; i < res; i++) {
|
||||||
int idx = picks[i].item.a_int;
|
int idx = picks[i].item.a_int;
|
||||||
|
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
/* delete selected hilites */
|
/* delete selected hilites */
|
||||||
if (mode)
|
if (mode)
|
||||||
@@ -3367,6 +3352,7 @@ int fld;
|
|||||||
/* delete selected hilites */
|
/* delete selected hilites */
|
||||||
for (i = 0; i < res; i++) {
|
for (i = 0; i < res; i++) {
|
||||||
int idx = picks[i].item.a_int;
|
int idx = picks[i].item.a_int;
|
||||||
|
|
||||||
if (idx > 0)
|
if (idx > 0)
|
||||||
(void) status_hilite_remove(idx);
|
(void) status_hilite_remove(idx);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1417,19 +1417,31 @@ const char *prompt;
|
|||||||
break;
|
break;
|
||||||
any.a_int = i + 1;
|
any.a_int = i + 1;
|
||||||
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, colornames[i].name,
|
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, colornames[i].name,
|
||||||
MENU_UNSELECTED);
|
(colornames[i].color == NO_COLOR) ? MENU_SELECTED
|
||||||
|
: MENU_UNSELECTED);
|
||||||
}
|
}
|
||||||
end_menu(tmpwin, (prompt && *prompt) ? prompt : "Pick a color");
|
end_menu(tmpwin, (prompt && *prompt) ? prompt : "Pick a color");
|
||||||
pick_cnt = select_menu(tmpwin, PICK_ONE, &picks);
|
pick_cnt = select_menu(tmpwin, PICK_ONE, &picks);
|
||||||
destroy_nhwindow(tmpwin);
|
destroy_nhwindow(tmpwin);
|
||||||
if (pick_cnt > 0) {
|
if (pick_cnt > 0) {
|
||||||
i = colornames[picks->item.a_int - 1].color;
|
i = colornames[picks[0].item.a_int - 1].color;
|
||||||
|
/* pick_cnt==2: explicitly picked something other than the
|
||||||
|
preselected entry */
|
||||||
|
if (pick_cnt == 2 && i == NO_COLOR)
|
||||||
|
i = colornames[picks[1].item.a_int - 1].color;
|
||||||
free((genericptr_t) picks);
|
free((genericptr_t) picks);
|
||||||
return i;
|
return i;
|
||||||
|
} else if (pick_cnt == 0) {
|
||||||
|
/* pick_cnt==0: explicitly picking preselected entry toggled it off */
|
||||||
|
return NO_COLOR;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ask about highlighting attribute; for menu headers and menu
|
||||||
|
coloring patterns, only one attribute at a time is allowed;
|
||||||
|
for status highlighting, multiple attributes are allowed [overkill;
|
||||||
|
life would be much simpler if that were restricted to one also...] */
|
||||||
int
|
int
|
||||||
query_attr(prompt)
|
query_attr(prompt)
|
||||||
const char *prompt;
|
const char *prompt;
|
||||||
@@ -1438,7 +1450,11 @@ const char *prompt;
|
|||||||
anything any;
|
anything any;
|
||||||
int i, pick_cnt;
|
int i, pick_cnt;
|
||||||
menu_item *picks = (menu_item *) 0;
|
menu_item *picks = (menu_item *) 0;
|
||||||
|
boolean allow_many = (prompt && !strncmpi(prompt, "Choose", 6));
|
||||||
|
int default_attr = ATR_NONE;
|
||||||
|
|
||||||
|
if (prompt && strstri(prompt, "menu headings"))
|
||||||
|
default_attr = iflags.menu_headings;
|
||||||
tmpwin = create_nhwindow(NHW_MENU);
|
tmpwin = create_nhwindow(NHW_MENU);
|
||||||
start_menu(tmpwin);
|
start_menu(tmpwin);
|
||||||
any = zeroany;
|
any = zeroany;
|
||||||
@@ -1447,16 +1463,61 @@ const char *prompt;
|
|||||||
break;
|
break;
|
||||||
any.a_int = i + 1;
|
any.a_int = i + 1;
|
||||||
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, attrnames[i].attr,
|
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, attrnames[i].attr,
|
||||||
attrnames[i].name, MENU_UNSELECTED);
|
attrnames[i].name,
|
||||||
|
(attrnames[i].attr == default_attr) ? MENU_SELECTED
|
||||||
|
: MENU_UNSELECTED);
|
||||||
}
|
}
|
||||||
end_menu(tmpwin, (prompt && *prompt) ? prompt : "Pick an attribute");
|
end_menu(tmpwin, (prompt && *prompt) ? prompt : "Pick an attribute");
|
||||||
pick_cnt = select_menu(tmpwin, PICK_ONE, &picks);
|
pick_cnt = select_menu(tmpwin, allow_many ? PICK_ANY: PICK_ONE, &picks);
|
||||||
destroy_nhwindow(tmpwin);
|
destroy_nhwindow(tmpwin);
|
||||||
if (pick_cnt > 0) {
|
if (pick_cnt > 0) {
|
||||||
i = attrnames[picks->item.a_int - 1].attr;
|
int j, k = 0;
|
||||||
|
|
||||||
|
if (allow_many) {
|
||||||
|
/* PICK_ANY, with one preselected entry which should be
|
||||||
|
excluded if any other choices were picked */
|
||||||
|
for (i = 0; i < pick_cnt; ++i) {
|
||||||
|
j = picks[i].item.a_int - 1;
|
||||||
|
if (attrnames[j].attr != ATR_NONE || pick_cnt == 1) {
|
||||||
|
switch (attrnames[j].attr) {
|
||||||
|
case ATR_DIM:
|
||||||
|
k |= HL_DIM;
|
||||||
|
break;
|
||||||
|
case ATR_BLINK:
|
||||||
|
k |= HL_BLINK;
|
||||||
|
break;
|
||||||
|
case ATR_ULINE:
|
||||||
|
k |= HL_ULINE;
|
||||||
|
break;
|
||||||
|
case ATR_INVERSE:
|
||||||
|
k |= HL_INVERSE;
|
||||||
|
break;
|
||||||
|
case ATR_BOLD:
|
||||||
|
k |= HL_BOLD;
|
||||||
|
break;
|
||||||
|
case ATR_NONE:
|
||||||
|
k = HL_NONE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* PICK_ONE, but might get 0 or 2 due to preselected entry */
|
||||||
|
j = picks[0].item.a_int - 1;
|
||||||
|
/* pick_cnt==2: explicitly picked something other than the
|
||||||
|
preselected entry */
|
||||||
|
if (pick_cnt == 2 && attrnames[j].attr == default_attr)
|
||||||
|
j = picks[1].item.a_int - 1;
|
||||||
|
k = attrnames[j].attr;
|
||||||
|
}
|
||||||
free((genericptr_t) picks);
|
free((genericptr_t) picks);
|
||||||
return i;
|
return k;
|
||||||
|
} else if (pick_cnt == 0 && !allow_many) {
|
||||||
|
/* PICK_ONE, preselected entry explicitly chosen */
|
||||||
|
return default_attr;
|
||||||
}
|
}
|
||||||
|
/* either ESC to explicitly cancel (pick_cnt==-1) or
|
||||||
|
PICK_ANY with preselected entry toggled off and nothing chosen */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4872,6 +4933,7 @@ boolean setinitial, setfromfile;
|
|||||||
const char *sattr, *sclr;
|
const char *sattr, *sclr;
|
||||||
menu_item *pick_list = (menu_item *) 0;
|
menu_item *pick_list = (menu_item *) 0;
|
||||||
struct menucoloring *tmp = menu_colorings;
|
struct menucoloring *tmp = menu_colorings;
|
||||||
|
char clrbuf[QBUFSZ];
|
||||||
|
|
||||||
tmpwin = create_nhwindow(NHW_MENU);
|
tmpwin = create_nhwindow(NHW_MENU);
|
||||||
start_menu(tmpwin);
|
start_menu(tmpwin);
|
||||||
@@ -4879,11 +4941,12 @@ boolean setinitial, setfromfile;
|
|||||||
mc_idx = 0;
|
mc_idx = 0;
|
||||||
while (tmp) {
|
while (tmp) {
|
||||||
sattr = attr2attrname(tmp->attr);
|
sattr = attr2attrname(tmp->attr);
|
||||||
sclr = clr2colorname(tmp->color);
|
sclr = strcpy(clrbuf, clr2colorname(tmp->color));
|
||||||
|
(void) strNsubst(clrbuf, " ", "-", 0);
|
||||||
any.a_int = ++mc_idx;
|
any.a_int = ++mc_idx;
|
||||||
/* construct suffix */
|
/* construct suffix */
|
||||||
Sprintf(buf, "\"\"=%s%s%s", sclr,
|
Sprintf(buf, "\"\"=%s%s%s", sclr,
|
||||||
(tmp->attr != ATR_NONE) ? " & " : "",
|
(tmp->attr != ATR_NONE) ? "&" : "",
|
||||||
(tmp->attr != ATR_NONE) ? sattr : "");
|
(tmp->attr != ATR_NONE) ? sattr : "");
|
||||||
/* now main string */
|
/* now main string */
|
||||||
ln = sizeof buf - strlen(buf) - 1; /* length available */
|
ln = sizeof buf - strlen(buf) - 1; /* length available */
|
||||||
|
|||||||
Reference in New Issue
Block a user