window port interface change - add mbehavior flags to start_menu()

Provide a way to communicate additional behaviors and/or appearances
desired from NetHack window port menus.

This is foundation work for changes to follow at a future date.
This commit is contained in:
nhmall
2020-02-20 20:12:51 -05:00
parent 8e6e4922f8
commit d81c096ce6
55 changed files with 170 additions and 134 deletions

View File

@@ -225,7 +225,7 @@ E void FDECL(mac_display_nhwindow, (winid, BOOLEAN_P));
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 *));

View File

@@ -263,7 +263,7 @@
#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)

View File

@@ -417,7 +417,7 @@ E void FDECL(X11_destroy_nhwindow, (winid));
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 *));

View File

@@ -79,7 +79,7 @@ extern void curses_destroy_nhwindow(winid wid);
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);

View File

@@ -69,7 +69,7 @@ E void FDECL(Gem_destroy_nhwindow, (winid));
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 *));

View File

@@ -30,7 +30,7 @@ struct window_procs {
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 *));
@@ -329,7 +329,7 @@ struct chain_procs {
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 *));
@@ -403,7 +403,7 @@ extern void FDECL(safe_curs, (winid, int, int));
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 *));

View File

@@ -32,6 +32,7 @@ struct WinDesc {
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 */
@@ -190,7 +191,7 @@ E void FDECL(tty_destroy_nhwindow, (winid));
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 *));

View File

@@ -111,6 +111,16 @@ typedef struct mi {
#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 */