destroy_nhwindow(window)
-- Destroy will dismiss the window if the window has not
already been dismissed.
-start_menu(window)
+start_menu(window, unsigned long mbehavior)
-- Start using window as a menu. You must call start_menu()
before add_menu(). After calling start_menu() you may not
putstr() to the window. Only windows of type NHW_MENU may
be used for menus.
+ -- mbehavior allows flags to be passed to alter the appearance
+ and/or behavior of the menu.
add_menu(windid window, int glyph, const anything identifier,
char accelerator, char groupacc,
int attr, char *str, unsigned itemflags)
E void FDECL(mac_destroy_nhwindow, (winid));
E void FDECL(mac_curs, (winid, int, int));
E void FDECL(mac_putstr, (winid, int, const char *));
-E void FDECL(mac_start_menu, (winid));
+E void FDECL(mac_start_menu, (winid, unsigned long mbehavior));
E void FDECL(mac_add_menu, (winid, int, const anything *, CHAR_P, CHAR_P, int,
const char *, unsigned int));
E void FDECL(mac_end_menu, (winid, const char *));
#define tty_curs(x, y, z) tty_curs_(x, y, z)
#define tty_putstr(x, y, z) tty_putstr_(x, y, z)
#define tty_display_file(x, y) tty_display_file_(x, y)
-#define tty_start_menu(x) tty_start_menu_(x)
+#define tty_start_menu(x, b) tty_start_menu_(x, b)
#define tty_add_menu(a, b, c, d, e, f, g, h) \
tty_add_menu_(a, b, c, d, e, f, g, h)
#define tty_end_menu(a, b) tty_end_menu_(a, b)
E void FDECL(X11_curs, (winid, int, int));
E void FDECL(X11_putstr, (winid, int, const char *));
E void FDECL(X11_display_file, (const char *, BOOLEAN_P));
-E void FDECL(X11_start_menu, (winid));
+E void FDECL(X11_start_menu, (winid, unsigned long));
E void FDECL(X11_add_menu, (winid, int, const ANY_P *, CHAR_P, CHAR_P, int,
const char *, unsigned int));
E void FDECL(X11_end_menu, (winid, const char *));
extern void curses_curs(winid wid, int x, int y);
extern void curses_putstr(winid wid, int attr, const char *text);
extern void curses_display_file(const char *filename, BOOLEAN_P must_exist);
-extern void curses_start_menu(winid wid);
+extern void curses_start_menu(winid wid, unsigned long);
extern void curses_add_menu(winid wid, int glyph, const ANY_P * identifier,
CHAR_P accelerator, CHAR_P group_accel, int attr,
const char *str, unsigned int itemflags);
E void FDECL(Gem_curs, (winid, int, int));
E void FDECL(Gem_putstr, (winid, int, const char *));
E void FDECL(Gem_display_file, (const char *, BOOLEAN_P));
-E void FDECL(Gem_start_menu, (winid));
+E void FDECL(Gem_start_menu, (winid, unsigned long));
E void FDECL(Gem_add_menu, (winid, int, const ANY_P *, CHAR_P, CHAR_P, int,
const char *, unsigned int));
E void FDECL(Gem_end_menu, (winid, const char *));
void FDECL((*win_putstr), (winid, int, const char *));
void FDECL((*win_putmixed), (winid, int, const char *));
void FDECL((*win_display_file), (const char *, BOOLEAN_P));
- void FDECL((*win_start_menu), (winid));
+ void FDECL((*win_start_menu), (winid, unsigned long));
void FDECL((*win_add_menu), (winid, int, const ANY_P *, CHAR_P, CHAR_P,
int, const char *, unsigned int));
void FDECL((*win_end_menu), (winid, const char *));
void FDECL((*win_putstr), (CARGS, winid, int, const char *));
void FDECL((*win_putmixed), (CARGS, winid, int, const char *));
void FDECL((*win_display_file), (CARGS, const char *, BOOLEAN_P));
- void FDECL((*win_start_menu), (CARGS, winid));
+ void FDECL((*win_start_menu), (CARGS, winid, unsigned long));
void FDECL((*win_add_menu), (CARGS, winid, int, const ANY_P *, CHAR_P,
CHAR_P, int, const char *, unsigned int));
void FDECL((*win_end_menu), (CARGS, winid, const char *));
extern void FDECL(safe_putstr, (winid, int, const char *));
extern void FDECL(safe_putmixed, (winid, int, const char *));
extern void FDECL(safe_display_file, (const char *, BOOLEAN_P));
-extern void FDECL(safe_start_menu, (winid));
+extern void FDECL(safe_start_menu, (winid, unsigned long));
extern void FDECL(safe_add_menu, (winid, int, const ANY_P *, CHAR_P, CHAR_P,
int, const char *, unsigned int));
extern void FDECL(safe_end_menu, (winid, const char *));
long rows, cols; /* dimensions */
long curx, cury; /* current cursor position */
long maxrow, maxcol; /* the maximum size used -- for MENU wins */
+ unsigned long mbehavior; /* menu behavior flags (MENU) */
/* maxcol is also used by WIN_MESSAGE for */
/* tracking the ^P command */
short *datlen; /* allocation size for *data */
E void FDECL(tty_curs, (winid, int, int));
E void FDECL(tty_putstr, (winid, int, const char *));
E void FDECL(tty_display_file, (const char *, BOOLEAN_P));
-E void FDECL(tty_start_menu, (winid));
+E void FDECL(tty_start_menu, (winid, unsigned long));
E void FDECL(tty_add_menu, (winid, int, const ANY_P *, CHAR_P, CHAR_P, int,
const char *, unsigned int));
E void FDECL(tty_end_menu, (winid, const char *));
#define MENU_ITEMFLAGS_SELECTED 0x0000001U
#define MENU_ITEMFLAGS_SKIPINVERT 0x0000002U
+/* 3.7+ enhanced menu flags that not all window ports are likely to
+ * support initially.
+ *
+ * As behavior and appearance modification flags are added, the various
+ * individual window ports will likely have to be updated to respond
+ * to the flags in an appropriate way.
+ */
+
+#define MENU_BEHAVE_STANDARD 0x0000000U
+
/* clang-format on */
#endif /* WINTYPE_H */
WIN_INVEN = create_nhwindow(NHW_MENU);
/* in case of early quit where WIN_INVEN could be destroyed before
ever having been used, use it here to pacify the Qt interface */
- start_menu(WIN_INVEN), end_menu(WIN_INVEN, (char *) 0);
+ start_menu(WIN_INVEN, 0U), end_menu(WIN_INVEN, (char *) 0);
#ifdef MAC
/* This _is_ the right place for this - maybe we will
any = cg.zeroany; /* set all bits to zero */
any.a_int = 1; /* use index+1 (cant use 0) as identifier */
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any.a_int++;
Sprintf(buf, "an object on the %s", surface(cc.x, cc.y));
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, buf,
anything any;
any = cg.zeroany; /* set all bits to zero */
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
/* use index+1 (cant use 0) as identifier */
for (i = num_ok_dungeons = 0; i < g.n_dgns; i++) {
if (!g.dungeons[i].dunlev_ureached)
(sortorder) ? cond_cmp : menualpha_cmp);
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = 1;
int adj = (arrmin > 0) ? 1 : arrmax;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = arrmin; i < arrmax; i++) {
any = cg.zeroany;
menu_item *picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; i < SIZE(conditions); i++) {
any = cg.zeroany;
menu_item *picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; i < MAXBLSTATS; i++) {
#ifndef SCORE_ON_BOTL
at = initblstats[fld].anytype;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (fld != BL_CONDITION) {
any = cg.zeroany;
menu_item *picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (ltok) {
if (str)
}
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (count) {
hlstr = status_hilite_str;
redo = FALSE;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
status_hilite_linestr_gather();
countall = status_hilite_linestr_countfield(BL_FLUSH);
while (redisplay) {
redisplay = FALSE;
any = cg.zeroany;
- start_menu(menuwin);
+ start_menu(menuwin, MENU_BEHAVE_STANDARD);
add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
"Extended Commands List",
MENU_ITEMFLAGS_NONE);
/* otherwise... */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
Sprintf(fmtstr, "%%-%ds", biggest + 15);
prompt[0] = '\0';
wastoolong = FALSE; /* True => had to wrap due to line width
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
for (i = 0; (propname = propertynames[i].prop_name) != 0; ++i) {
p = propertynames[i].prop_num;
if (p == HALLUC_RES) {
* a legend for the levl[][].typ codes dump
*/
men = create_nhwindow(NHW_MENU);
- start_menu(men);
+ start_menu(men, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = 1;
add_menu(men, NO_GLYPH, &any, 0, 0, ATR_NONE,
struct monst *mtmp;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
if (IS_DOOR(typ)) {
boolean key_or_pick, card;
menu_item *picks = (menu_item *) 0;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
if (IS_FOUNTAIN(typ) || IS_SINK(typ)) {
Sprintf(buf, "Drink from the %s",
}
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
/* gather_locs returns array[0] == you. skip it. */
boolean abc = flags.lootabc;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_char = 'm'; /* group accelerator 'C' */
add_menu(win, NO_GLYPH, &any, abc ? 0 : any.a_char, 'C', ATR_NONE,
winid win = create_nhwindow(NHW_MENU);
if (bymenu) {
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
lchoices.idx = 0;
lchoices.menuletter = 'a';
}
g.en_win = create_nhwindow(NHW_MENU);
g.en_via_menu = !final;
if (g.en_via_menu)
- start_menu(g.en_win);
+ start_menu(g.en_win, MENU_BEHAVE_STANDARD);
Strcpy(tmpbuf, g.plname);
*tmpbuf = highc(*tmpbuf); /* same adjustment as bottom line */
int i, n, choice;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; i < SIZE(vanqorders); i++) {
if (i == VANQ_ALPHA_MIX || i == VANQ_MCLS_HTOL) /* skip these */
sortedinvent = sortloot(&g.invent, sortflags, FALSE,
(boolean FDECL((*), (OBJ_P))) 0);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
if (wizard && iflags.override_ID) {
int unid_cnt;
if (g.invent) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
while (!invdone) {
any = cg.zeroany; /* set all bits to zero */
classcount = 0;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
add_menu(win, NO_GLYPH, &any, 0, 0, iflags.menu_headings, hdr,
MENU_ITEMFLAGS_NONE);
add_menu(win, NO_GLYPH, &any, 0, 0, ATR_NONE, "", MENU_ITEMFLAGS_NONE);
luaL_checktype(L, argc, LUA_TTABLE);
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
lua_pushnil(L); /* first key */
while (lua_next(L, argc) != 0) {
|| flags.menu_style == MENU_COMBINATION);
if (!traditional) {
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
}
any = cg.zeroany;
menulet = 'a';
any = cg.zeroany;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
/*
* Skip the "unique objects" section (each will appear within its
menu_item *picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(colornames); i++) {
if (!colornames[i].name)
if (prompt && strstri(prompt, "menu headings"))
default_attr = iflags.menu_headings;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(attrnames); i++) {
if (!attrnames[i].name)
menu_item *picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(msgtype_names); i++)
if (msgtype_names[i].descr) {
unsigned longest_name_len;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
#ifdef notyet /* SYSCF */
/* XXX I think this is still fragile. Fixing initial/from_file and/or
opt_idx = 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(action_titles); i++) {
char tmpbuf[BUFSZ];
menu_item *style_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(menutype); i++) {
style_name = menutype[i];
menu_item *paranoia_picks = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; paranoia[i].flagmask != 0; ++i) {
if (paranoia[i].flagmask == PARANOID_BONES && !wizard)
menu_item *burden_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(burdentype); i++) {
burden_name = burdentype[i];
menu_item *disclosure_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < NUM_DISCLOSURE_OPTIONS; i++) {
Sprintf(buf, "%-12s[%c%c]", disclosure_names[i],
Sprintf(buf, "Disclosure options for %s:",
disclosure_names[i]);
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
/* 'y','n',and '+' work as alternate selectors; '-' doesn't */
any.a_char = DISCLOSE_NO_WITHOUT_PROMPT;
menu_item *mode_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(runmodes); i++) {
mode_name = runmodes[i];
char gp = iflags.getpos_coords;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_char = GPCOORDS_COMPASS;
add_menu(tmpwin, NO_GLYPH, &any, GPCOORDS_COMPASS, 0, ATR_NONE,
char gf = iflags.getloc_filter;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_char = (GFILTER_NONE + 1);
add_menu(tmpwin, NO_GLYPH, &any, 'n',
menu_item *window_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
if (!WINDOWPORT("curses")) {
any.a_char = 's';
menu_item *sortl_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(sortltype); i++) {
sortl_name = sortltype[i];
boolean msg = (*(optname + 6) == 'm');
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = ALIGN_TOP;
add_menu(tmpwin, NO_GLYPH, &any, 't', 0, ATR_NONE, "top",
menu_item *mode_pick = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(npchoices); i++) {
any.a_int = i + 1;
struct plinemsg_type *tmp = g.plinemsg_types;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
mt_idx = 0;
while (tmp) {
char clrbuf[QBUFSZ];
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
mc_idx = 0;
while (tmp) {
menu_item *pick_list = (menu_item *) 0;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
if (numapes) {
ape = g.apelist;
any = cg.zeroany;
Sprintf(fmtstr, "%%-%ds %%s", biggest + 2);
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
any.a_int = 1; /* -1 + 2 [see 'if (sl->name) {' below]*/
if (!symset_name)
next_accelerator = 'a';
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
while (*class_list) {
const char *text;
boolean selected;
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_char = '/';
/* 'y' and 'n' to keep backwards compatibility with previous
versions: "Specify unknown object by cursor?" */
int sel;
any = cg.zeroany; /* zero all bits */
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
for (i = 0; help_menu_items[i].text; i++) {
if (!wizard && help_menu_items[i].f == dispfile_debughelp)
(qflags & BY_NEXTHERE) ? TRUE : FALSE, allow);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
/*
* Run through the list and add the objects to the menu. If
}
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
pack = flags.inv_order;
if (qflags & CHOOSE_ALL) {
any.a_void = 0;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
for (cobj = g.level.objects[cc.x][cc.y]; cobj;
cobj = cobj->nexthere)
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_int = 1; /* ':' */
Sprintf(buf, "Look inside %s", thesimpleoname(obj));
any = cg.zeroany;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
for (cobj = g.level.objects[cc.x][cc.y], i = 0; cobj;
cobj = cobj->nexthere)
saved = get_saved_games(); /* array of character names */
if (saved && *saved) {
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* no selection */
if (bannerwin != WIN_ERR) {
/* for tty; erase copyright notice and redo it in the menu */
int i, n, choice;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; i < SIZE(spl_sortchoices); i++) {
anything any;
tmpwin = create_nhwindow(NHW_MENU);
- start_menu(tmpwin);
+ start_menu(tmpwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
/*
int i, tmode;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
for (i = 0; i < SIZE(tports); ++i) {
any.a_int = (int) tports[i].menulet;
}
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
/* start with a legend if any entries will be annotated
with "*" or "#" below */
static void FDECL(dump_clear_nhwindow, (winid));
static void FDECL(dump_display_nhwindow, (winid, BOOLEAN_P));
static void FDECL(dump_destroy_nhwindow, (winid));
-static void FDECL(dump_start_menu, (winid));
+static void FDECL(dump_start_menu, (winid, unsigned long));
static void FDECL(dump_add_menu, (winid, int, const ANY_P *, CHAR_P,
CHAR_P, int, const char *, unsigned int));
static void FDECL(dump_end_menu, (winid, const char *));
static void NDECL(hup_void_ndecl);
static void FDECL(hup_void_fdecl_int, (int));
static void FDECL(hup_void_fdecl_winid, (winid));
+static void FDECL(hup_void_fdecl_winid_ulong, (winid, unsigned long));
static void FDECL(hup_void_fdecl_constchar_p, (const char *));
static struct window_procs hup_procs = {
hup_create_nhwindow, hup_void_fdecl_winid, /* clear_nhwindow */
hup_display_nhwindow, hup_void_fdecl_winid, /* destroy_nhwindow */
hup_curs, hup_putstr, hup_putstr, /* putmixed */
- hup_display_file, hup_void_fdecl_winid, /* start_menu */
+ hup_display_file, hup_void_fdecl_winid_ulong, /* start_menu */
hup_add_menu, hup_end_menu, hup_select_menu, genl_message_menu,
hup_void_ndecl, /* update_inventory */
hup_void_ndecl, /* mark_synch */
return;
}
+/*ARGUSED*/
+static void
+hup_void_fdecl_winid_ulong(window, mbehavior)
+winid window UNUSED;
+unsigned long mbehavior UNUSED;
+{
+ return;
+}
+
/*ARGUSED*/
static void
hup_void_fdecl_constchar_p(string)
/*ARGUSED*/
static void
-dump_start_menu(win)
+dump_start_menu(win, mbehavior)
winid win UNUSED;
+unsigned long mbehavior;
{
return;
}
#ifdef EXTMENU
if (iflags.extmenu) {
win = amii_create_nhwindow(NHW_MENU);
- amii_start_menu(win);
+ amii_start_menu(win, MENU_BEHAVE_STANDARD);
pline("#");
amii_putstr(WIN_MESSAGE, -1, " ");
}
win = amii_create_nhwindow(NHW_MENU);
- amii_start_menu(win);
+ amii_start_menu(win, MENU_BEHAVE_STANDARD);
for (i = 0; extcmdlist[i].ef_txt != NULL; ++i) {
id.a_char = extcmdlist[i].ef_txt[0];
} else {
/* Prompt for a role */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) {
if (ok_role(i, flags.initrace, flags.initgend,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; races[i].noun; i++)
if (ok_race(flags.initrole, i, flags.initgend,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_GENDERS; i++)
if (ok_gend(flags.initrole, flags.initrace, i,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_ALIGNS; i++)
if (ok_align(flags.initrole, flags.initrace,
/* winami.c */
void FDECL(amii_raw_print, (const char *));
void FDECL(amii_raw_print_bold, (const char *));
-void FDECL(amii_start_menu, (winid ));
+void FDECL(amii_start_menu, (winid , unsigned long ));
void FDECL(amii_add_menu, (winid , char , int , const char *, unsigned int));
void FDECL(amii_end_menu, (winid , char , const char * , const char *));
char FDECL(amii_select_menu, (winid ));
/* Start building the text for a menu */
void
-amii_start_menu(window)
+amii_start_menu(window, mbehavior)
register winid window;
+unsigned long mbehavior UNUSED;
+
{
register int i;
register struct amii_WinDesc *cw;
void amii_getret(void);
/* winmenu.c */
-void amii_start_menu(winid window);
+void amii_start_menu(winid window, unsigned long);
void FDECL(amii_add_menu, (winid, int, const anything *, CHAR_P, CHAR_P, int,
const char *, unsigned int));
void FDECL(amii_end_menu, (winid, const char *));
}
void
-mac_start_menu(winid win)
+mac_start_menu(winid win, unsigned long mbehavior)
{
HideWindow(theWindows[win].its_window);
mac_clear_nhwindow(win);
pSet = nhcmdset_default;
wid = mswin_create_nhwindow(NHW_MENU);
- mswin_start_menu(wid);
+ mswin_start_menu(wid, MENU_BEHAVE_STANDARD);
for (i = 0; i < nhcmdset_count(pSet); i++) {
any.a_void = nhcmdset_get(pSet, i);
mswin_add_menu(wid, NO_GLYPH, &any, 'a' + i, 0, ATR_NONE,
/* tty_putstr(BASE_WINDOW, 0, "Choosing Character's Role"); */
/* Prompt for a role */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) {
if (ok_role(i, flags.initrace, flags.initgend,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Race"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; races[i].noun; i++)
if (ok_race(flags.initrole, i, flags.initgend,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Gender"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_GENDERS; i++)
if (ok_gend(flags.initrole, flags.initrace, i,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Alignment"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_ALIGNS; i++)
if (ok_align(flags.initrole, flags.initrace,
be used for menus.
*/
void
-mswin_start_menu(winid wid)
+mswin_start_menu(winid wid, unsigned long mbehavior)
{
- logDebug("mswin_start_menu(%d)\n", wid);
+ logDebug("mswin_start_menu(%d, %lu)\n", wid, mbehavior);
if ((wid >= 0) && (wid < MAXWINDOWS)) {
if (GetNHApp()->windowlist[wid].win == NULL
&& GetNHApp()->windowlist[wid].type == NHW_MENU) {
void mswin_putstr(winid wid, int attr, const char *text);
void mswin_putstr_ex(winid wid, int attr, const char *text, boolean append);
void mswin_display_file(const char *filename, BOOLEAN_P must_exist);
-void mswin_start_menu(winid wid);
+void mswin_start_menu(winid wid, unsigned long);
void mswin_add_menu(winid wid, int glyph, const ANY_P *identifier,
CHAR_P accelerator, CHAR_P group_accel, int attr,
const char *str, unsigned int itemflags);
}
}
-void NetHackQtBind::qt_start_menu(winid wid)
+void NetHackQtBind::qt_start_menu(winid wid, unsigned long mbehavior)
{
NetHackQtWindow* window=id_to_window[(int)wid];
window->StartMenu();
static void qt_putstr(winid wid, int attr, const std::string& text);
static void qt_putstr(winid wid, int attr, const QString& text);
static void qt_display_file(const char *filename, BOOLEAN_P must_exist);
- static void qt_start_menu(winid wid);
+ static void qt_start_menu(winid wid, unsigned long mbehavior);
static void qt_add_menu(winid wid, int glyph,
const ANY_P * identifier, CHAR_P ch, CHAR_P gch, int attr,
const char *str, unsigned int itemflags);
}
}
-void NetHackQtBind::qt_start_menu(winid wid)
+void NetHackQtBind::qt_start_menu(winid wid, unsigned long mbehavior)
{
NetHackQtWindow* window=id_to_window[wid];
window->StartMenu();
static void qt_curs(winid wid, int x, int y);
static void qt_putstr(winid wid, int attr, const char *text);
static void qt_display_file(const char *filename, BOOLEAN_P must_exist);
- static void qt_start_menu(winid wid);
+ static void qt_start_menu(winid wid, unsigned long mbehavior);
static void qt_add_menu(winid wid, int glyph, const ANY_P *identifier,
CHAR_P ch, CHAR_P gch, int attr, const char *str,
unsigned itemflags);
newwin = X11_create_nhwindow(NHW_MENU);
wp = &window_list[newwin];
- X11_start_menu(newwin);
+ X11_start_menu(newwin, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
while (dlb_fgets(line, LLEN, fp)) {
/* Global functions ======================================================= */
void
-X11_start_menu(window)
+X11_start_menu(window, mbehavior)
winid window;
+unsigned long mbehavior UNUSED;
{
struct xwindow *wp;
check_winid(window);
winid newwin = X11_create_nhwindow(NHW_MENU);
struct xwindow *nwp = &window_list[newwin];
- X11_start_menu(newwin);
+ X11_start_menu(newwin, MENU_BEHAVE_STANDARD);
move_menu(&menu_info->new_menu, &nwp->menu_information->new_menu);
for (curr = nwp->menu_information->new_menu.base; curr;
curr = curr->next)
}
void
-chainin_start_menu(window)
+chainin_start_menu(window, mbehavior)
winid window;
+unsigned long mbehavior;
{
- (*cibase->nprocs->win_start_menu)(cibase->ndata, window);
+ (*cibase->nprocs->win_start_menu)(cibase->ndata, window, mbehavior);
}
void
}
void
-chainout_start_menu(vp, window)
+chainout_start_menu(vp, window, mbehavior)
void *vp;
winid window;
+unsigned long mbehavior;
{
struct chainout_data *tdp = vp;
- (*tdp->nprocs->win_start_menu)(window);
+ (*tdp->nprocs->win_start_menu)(window, mbehavior);
}
void
}
void
-trace_start_menu(vp, window)
+trace_start_menu(vp, window, mbehavior)
void *vp;
winid window;
+unsigned long mbehavior;
{
struct trace_data *tdp = vp;
- fprintf(wc_tracelogf, "%sstart_menu(%d)\n", INDENT, window);
+ fprintf(wc_tracelogf, "%sstart_menu(%d, %lu)\n", INDENT,
+ window, mbehavior);
PRE;
- (*tdp->nprocs->win_start_menu)(tdp->ndata, window);
+ (*tdp->nprocs->win_start_menu)(tdp->ndata, window, mbehavior);
POST;
}
winid wid = curses_get_wid(NHW_MENU);
identifier.a_void = 0;
- curses_start_menu(wid);
+ curses_start_menu(wid, MENU_BEHAVE_STANDARD);
for (count = 0; choices[count]; count++) {
curletter = tolower(choices[count][0]);
winid wid = curses_get_wid(type);
if (curses_is_menu(wid) || curses_is_text(wid)) {
- curses_start_menu(wid);
+ curses_start_menu(wid, MENU_BEHAVE_STANDARD);
curses_add_wid(wid);
}
be used for menus.
*/
void
-curses_start_menu(winid wid)
+curses_start_menu(winid wid, unsigned long mbehavior)
{
if (inv_update)
return;
} else {
/* Prompt for a role */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) {
if (ok_role(i, flags.initrace, flags.initgend,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; races[i].noun; i++)
if (ok_race(flags.initrole, i, flags.initgend,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_GENDERS; i++)
if (ok_gend(flags.initrole, flags.initrace, i,
/* Permit the user to pick, if there is more than one */
if (n > 1) {
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any.a_void = 0; /* zero out all bits */
for (i = 0; i < ROLE_ALIGNS; i++)
if (ok_align(flags.initrole, flags.initrace,
const char *ptr;
wind = Gem_create_nhwindow(NHW_MENU);
- Gem_start_menu(wind);
+ Gem_start_menu(wind, MENU_BEHAVE_STANDARD);
for (i = 0; (ptr = extcmdlist[i].ef_txt); i++) {
any.a_int = i;
accelerator = *ptr;
/************************* Gem_start_menu *******************************/
void
-Gem_start_menu(win)
+Gem_start_menu(win, mbehavior)
winid win;
+unsigned long mbehavior UNUSED;
{
win = win;
if (invent_list) {
use_rip = FALSE;
break;
case NHW_MENU:
- Gem_start_menu(window); /* delete invent_list */
+ Gem_start_menu(window, MENU_BEHAVE_STANDARD); /* delete invent_list */
test_free(Menu_title);
break;
case 0: /* No window available, probably an error message? */
be used for menus.
*/
void
-gnome_start_menu(winid wid)
+gnome_start_menu(winid wid, unsigned long mbehavior)
{
if (wid != -1) {
if (gnome_windowlist[wid].win == NULL
void gnome_curs(winid wid, int x, int y);
void gnome_putstr(winid wid, int attr, const char *text);
void gnome_display_file(const char *filename, BOOLEAN_P must_exist);
-void gnome_start_menu(winid wid);
+void gnome_start_menu(winid wid, unsigned long mbehavior);
void gnome_add_menu(winid wid, int glyph, const ANY_P *identifier,
CHAR_P accelerator, CHAR_P group_accel, int attr,
const char *str, BOOLEAN_P presel);
}
void
-safe_start_menu(window)
+safe_start_menu(window, mbehavior)
winid window;
+unsigned long mbehavior;
{
return;
}
tty_clear_nhwindow(BASE_WINDOW);
role_selection_prolog(RS_ROLE, BASE_WINDOW);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
/* populate the menu with role choices */
setup_rolemenu(win, TRUE, RACE, GEND, ALGN);
/* add miscellaneous menu entries */
tty_clear_nhwindow(BASE_WINDOW);
role_selection_prolog(RS_RACE, BASE_WINDOW);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
/* populate the menu with role choices */
setup_racemenu(win, TRUE, ROLE, GEND, ALGN);
tty_clear_nhwindow(BASE_WINDOW);
role_selection_prolog(RS_GENDER, BASE_WINDOW);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
/* populate the menu with gender choices */
setup_gendmenu(win, TRUE, ROLE, RACE, ALGN);
tty_clear_nhwindow(BASE_WINDOW);
role_selection_prolog(RS_ALGNMNT, BASE_WINDOW);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
setup_algnmenu(win, TRUE, ROLE, RACE, GEND);
role_menu_extra(ROLE_RANDOM, win, TRUE);
tty_clear_nhwindow(BASE_WINDOW);
role_selection_prolog(ROLE_NONE, BASE_WINDOW);
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
any.a_int = 0;
if (!roles[ROLE].name.f
menu_item *selected = 0;
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany;
/* no extra blank line preceding this entry; end_menu supplies one */
newwin->mlist = (tty_menu_item *) 0;
newwin->plist = (tty_menu_item **) 0;
newwin->npages = newwin->plist_size = newwin->nitems = newwin->how = 0;
+ newwin->mbehavior = 0U;
switch (type) {
case NHW_BASE:
/* base window, used for absolute movement on the screen */
}
void
-tty_start_menu(window)
+tty_start_menu(window, mbehavior)
winid window;
+unsigned long mbehavior;
{
+ wins[window]->mbehavior = mbehavior;
tty_clear_nhwindow(window);
return;
}
/* tty_putstr(BASE_WINDOW, 0, "Choosing Character's Role"); */
/* Prompt for a role */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; roles[i].name.m; i++) {
if (ok_role(i, flags.initrace, flags.initgend,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Race"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; races[i].noun; i++)
if (ok_race(flags.initrole, i, flags.initgend,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Gender"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; i < ROLE_GENDERS; i++)
if (ok_gend(flags.initrole, flags.initrace, i,
/* tty_clear_nhwindow(BASE_WINDOW); */
/* tty_putstr(BASE_WINDOW, 0, "Choosing Alignment"); */
win = create_nhwindow(NHW_MENU);
- start_menu(win);
+ start_menu(win, MENU_BEHAVE_STANDARD);
any = cg.zeroany; /* zero out all bits */
for (i = 0; i < ROLE_ALIGNS; i++)
if (ok_align(flags.initrole, flags.initrace,
be used for menus.
*/
void
-mswin_start_menu(winid wid)
+mswin_start_menu(winid wid, unsigned long mbehavior)
{
- logDebug("mswin_start_menu(%d)\n", wid);
+ logDebug("mswin_start_menu(%d, %lu)\n", wid, mbehavior);
if ((wid >= 0) && (wid < MAXWINDOWS)) {
if (GetNHApp()->windowlist[wid].win == NULL
&& GetNHApp()->windowlist[wid].type == NHW_MENU) {
void mswin_putstr(winid wid, int attr, const char *text);
void mswin_putstr_ex(winid wid, int attr, const char *text, int);
void mswin_display_file(const char *filename, BOOLEAN_P must_exist);
-void mswin_start_menu(winid wid);
+void mswin_start_menu(winid wid, unsigned long mbehavior);
void mswin_add_menu(winid wid, int glyph, const ANY_P *identifier,
CHAR_P accelerator, CHAR_P group_accel, int attr,
const char *str, unsigned int itemflags);