deal with some win/win32 warnings
win/win32/mhdlg.c(137) : warning C4456: declaration of 'wbuf' hides
previous local declaration
win/win32/mhdlg.c(62) : note: see declaration of 'wbuf'
win/win32/mhdlg.c(875) : warning C4189: 'gender': local variable is
initialized but not referenced
win/win32/mhdlg.c(874) : warning C4189: 'race': local variable is
initialized but not referenced
win/win32/mhdlg.c(876) : warning C4189: 'alignment': local variable is
initialized but not referenced
win/win32/mhdlg.c(873) : warning C4189: 'role': local variable is
initialized but not referenced
win/win32/mhinput.h(24) : warning C4201: nonstandard extension used:
nameless struct/union
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhinput.h(24) : warning C4201: nonstandard extension used:
nameless struct/union
win/win32/mhinput.h(24) : warning C4201: nonstandard extension used:
nameless struct/union
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhmenu.c(62) : warning C4201: nonstandard extension used:
nameless struct/union
win/win32/mhmenu.c(1082) : warning C4456: declaration of 'monitorScale'
hides previous local declaration
win/win32/mhmenu.c(995) : note: see declaration of 'monitorScale'
win/win32/mhmenu.c(1142) : warning C4456: declaration of 'wbuf' hides
previous local declaration
win/win32/mhmenu.c(986) : note: see declaration of 'wbuf'
win/win32/mhmenu.c(1082) : warning C4189: 'monitorScale': local variable
is initialized but not referenced
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhmsgwnd.c(700): warning C4701: potentially uninitialized
local variable 'size' used
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhsplash.c(158): warning C4189: 'verstrsize': local variable
is initialized but not referenced
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhstatus.c(353): warning C4057: 'function':
'const unsigned char *' differs in indirection
to slightly different base types from 'const char *'
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/mhmsg.h(70) : warning C4200: nonstandard extension used:
zero-sized array in struct/union
win/win32/NetHackW.c(181): warning C4456: declaration of 'buf' hides
previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'
win/win32/NetHackW.c(189): warning C4456: declaration of 'buf' hides
previous local declaration
win/win32/NetHackW.c(90) : note: see declaration of 'buf'
This commit is contained in:
@@ -178,21 +178,21 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
|
|||||||
|
|
||||||
// init controls
|
// init controls
|
||||||
if (FAILED(GetComCtlVersion(&major, &minor))) {
|
if (FAILED(GetComCtlVersion(&major, &minor))) {
|
||||||
char buf[TBUFSZ];
|
char buf2[TBUFSZ];
|
||||||
Sprintf(buf, "Cannot load common control library.\n%s\n%s",
|
Sprintf(buf2, "Cannot load common control library.\n%s\n%s",
|
||||||
"For further information, refer to the installation notes at",
|
"For further information, refer to the installation notes at",
|
||||||
INSTALL_NOTES);
|
INSTALL_NOTES);
|
||||||
panic(buf);
|
panic(buf2);
|
||||||
}
|
}
|
||||||
if (major < MIN_COMCTLMAJOR
|
if (major < MIN_COMCTLMAJOR
|
||||||
|| (major == MIN_COMCTLMAJOR && minor < MIN_COMCTLMINOR)) {
|
|| (major == MIN_COMCTLMAJOR && minor < MIN_COMCTLMINOR)) {
|
||||||
char buf[TBUFSZ];
|
char buf2[TBUFSZ];
|
||||||
Sprintf(buf, "Common control library is outdated.\n%s %d.%d\n%s\n%s",
|
Sprintf(buf2, "Common control library is outdated.\n%s %d.%d\n%s\n%s",
|
||||||
"NetHack requires at least version ", MIN_COMCTLMAJOR,
|
"NetHack requires at least version ", MIN_COMCTLMAJOR,
|
||||||
MIN_COMCTLMINOR,
|
MIN_COMCTLMINOR,
|
||||||
"For further information, refer to the installation notes at",
|
"For further information, refer to the installation notes at",
|
||||||
INSTALL_NOTES);
|
INSTALL_NOTES);
|
||||||
panic(buf);
|
panic(buf2);
|
||||||
}
|
}
|
||||||
ZeroMemory(&InitCtrls, sizeof(InitCtrls));
|
ZeroMemory(&InitCtrls, sizeof(InitCtrls));
|
||||||
InitCtrls.dwSize = sizeof(InitCtrls);
|
InitCtrls.dwSize = sizeof(InitCtrls);
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_COMMAND: {
|
case WM_COMMAND: {
|
||||||
TCHAR wbuf[BUFSZ];
|
TCHAR wbuf2[BUFSZ];
|
||||||
|
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
/* OK button was pressed */
|
/* OK button was pressed */
|
||||||
@@ -142,8 +142,8 @@ GetlinDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
data =
|
data =
|
||||||
(struct getlin_data *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
(struct getlin_data *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||||
SendDlgItemMessage(hWnd, IDC_GETLIN_EDIT, WM_GETTEXT,
|
SendDlgItemMessage(hWnd, IDC_GETLIN_EDIT, WM_GETTEXT,
|
||||||
(WPARAM) sizeof(wbuf), (LPARAM) wbuf);
|
(WPARAM) sizeof(wbuf2), (LPARAM) wbuf2);
|
||||||
NH_W2A(wbuf, data->result, data->result_size);
|
NH_W2A(wbuf2, data->result, data->result_size);
|
||||||
|
|
||||||
/* Fall through. */
|
/* Fall through. */
|
||||||
|
|
||||||
@@ -870,11 +870,16 @@ plselAdjustSelections(HWND hWnd)
|
|||||||
int
|
int
|
||||||
plselFinalSelection(HWND hWnd)
|
plselFinalSelection(HWND hWnd)
|
||||||
{
|
{
|
||||||
int role = flags.initrole;
|
int role, race, gender, alignment;
|
||||||
int race = flags.initrace;
|
|
||||||
int gender = flags.initgend;
|
|
||||||
int alignment = flags.initalign;
|
|
||||||
|
|
||||||
|
nhUse(role);
|
||||||
|
nhUse(race);
|
||||||
|
nhUse(gender);
|
||||||
|
nhUse(alignment);
|
||||||
|
role = flags.initrole;
|
||||||
|
race = flags.initrace;
|
||||||
|
gender = flags.initgend;
|
||||||
|
alignment = flags.initalign;
|
||||||
assert(role != ROLE_RANDOM && role != ROLE_NONE);
|
assert(role != ROLE_RANDOM && role != ROLE_NONE);
|
||||||
assert(race != ROLE_RANDOM && race != ROLE_NONE);
|
assert(race != ROLE_RANDOM && race != ROLE_NONE);
|
||||||
assert(gender != ROLE_RANDOM && gender != ROLE_NONE);
|
assert(gender != ROLE_RANDOM && gender != ROLE_NONE);
|
||||||
@@ -889,6 +894,7 @@ plselFinalSelection(HWND hWnd)
|
|||||||
|
|
||||||
static boolean plselRandomize(plsel_data_t * data)
|
static boolean plselRandomize(plsel_data_t * data)
|
||||||
{
|
{
|
||||||
|
int role, race, gender, alignment;
|
||||||
boolean fully_specified = TRUE;
|
boolean fully_specified = TRUE;
|
||||||
|
|
||||||
// restore back to configuration settings
|
// restore back to configuration settings
|
||||||
@@ -914,10 +920,10 @@ static boolean plselRandomize(plsel_data_t * data)
|
|||||||
|
|
||||||
rigid_role_checks();
|
rigid_role_checks();
|
||||||
|
|
||||||
int role = flags.initrole;
|
role = flags.initrole;
|
||||||
int race = flags.initrace;
|
race = flags.initrace;
|
||||||
int gender = flags.initgend;
|
gender = flags.initgend;
|
||||||
int alignment = flags.initalign;
|
alignment = flags.initalign;
|
||||||
|
|
||||||
assert(role != ROLE_RANDOM && role != ROLE_NONE);
|
assert(role != ROLE_RANDOM && role != ROLE_NONE);
|
||||||
assert(race != ROLE_RANDOM && race != ROLE_NONE);
|
assert(race != ROLE_RANDOM && race != ROLE_NONE);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ mswin_input_pop(void)
|
|||||||
if (g.program_state.done_hup) {
|
if (g.program_state.done_hup) {
|
||||||
static MSNHEvent hangup_event;
|
static MSNHEvent hangup_event;
|
||||||
hangup_event.type = NHEVENT_CHAR;
|
hangup_event.type = NHEVENT_CHAR;
|
||||||
hangup_event.kbd.ch = '\033';
|
hangup_event.ei.kbd.ch = '\033';
|
||||||
return &hangup_event;
|
return &hangup_event;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -101,7 +101,7 @@ mswin_input_peek(void)
|
|||||||
if (g.program_state.done_hup) {
|
if (g.program_state.done_hup) {
|
||||||
static MSNHEvent hangup_event;
|
static MSNHEvent hangup_event;
|
||||||
hangup_event.type = NHEVENT_CHAR;
|
hangup_event.type = NHEVENT_CHAR;
|
||||||
hangup_event.kbd.ch = '\033';
|
hangup_event.ei.kbd.ch = '\033';
|
||||||
return &hangup_event;
|
return &hangup_event;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,34 +10,37 @@
|
|||||||
|
|
||||||
#define NHEVENT_CHAR 1
|
#define NHEVENT_CHAR 1
|
||||||
#define NHEVENT_MOUSE 2
|
#define NHEVENT_MOUSE 2
|
||||||
|
|
||||||
|
union event_innards {
|
||||||
|
struct {
|
||||||
|
int ch;
|
||||||
|
} kbd;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int mod;
|
||||||
|
int x, y;
|
||||||
|
} ms;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct mswin_event {
|
typedef struct mswin_event {
|
||||||
int type;
|
int type;
|
||||||
union {
|
union event_innards ei;
|
||||||
struct {
|
|
||||||
int ch;
|
|
||||||
} kbd;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
int mod;
|
|
||||||
int x, y;
|
|
||||||
} ms;
|
|
||||||
};
|
|
||||||
} MSNHEvent, *PMSNHEvent;
|
} MSNHEvent, *PMSNHEvent;
|
||||||
|
|
||||||
#define NHEVENT_KBD(c) \
|
#define NHEVENT_KBD(c) \
|
||||||
{ \
|
{ \
|
||||||
MSNHEvent e; \
|
MSNHEvent e; \
|
||||||
e.type = NHEVENT_CHAR; \
|
e.type = NHEVENT_CHAR; \
|
||||||
e.kbd.ch = (c); \
|
e.ei.kbd.ch = (c); \
|
||||||
mswin_input_push(&e); \
|
mswin_input_push(&e); \
|
||||||
}
|
}
|
||||||
#define NHEVENT_MS(_mod, _x, _y) \
|
#define NHEVENT_MS(_mod, _x, _y) \
|
||||||
{ \
|
{ \
|
||||||
MSNHEvent e; \
|
MSNHEvent e; \
|
||||||
e.type = NHEVENT_MOUSE; \
|
e.type = NHEVENT_MOUSE; \
|
||||||
e.ms.mod = (_mod); \
|
e.ei.ms.mod = (_mod); \
|
||||||
e.ms.x = (_x); \
|
e.ei.ms.x = (_x); \
|
||||||
e.ms.y = (_y); \
|
e.ei.ms.y = (_y); \
|
||||||
mswin_input_push(&e); \
|
mswin_input_push(&e); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1248,7 +1248,6 @@ mswin_apply_window_style_all(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns strdup() created pointer - callee assumes the ownership
|
// returns strdup() created pointer - callee assumes the ownership
|
||||||
#define TEXT_BUFFER_SIZE 4096
|
|
||||||
char *
|
char *
|
||||||
nh_compose_ascii_screenshot(void)
|
nh_compose_ascii_screenshot(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -39,27 +39,29 @@ typedef struct mswin_menu_item {
|
|||||||
BOOL has_focus;
|
BOOL has_focus;
|
||||||
} NHMenuItem, *PNHMenuItem;
|
} NHMenuItem, *PNHMenuItem;
|
||||||
|
|
||||||
|
union menu_innards {
|
||||||
|
struct menu_list {
|
||||||
|
int size; /* number of items in items[] */
|
||||||
|
int allocated; /* number of allocated slots in items[] */
|
||||||
|
PNHMenuItem items; /* menu items */
|
||||||
|
char gacc[QBUFSZ]; /* group accelerators */
|
||||||
|
BOOL counting; /* counting flag */
|
||||||
|
char prompt[QBUFSZ]; /* menu prompt */
|
||||||
|
int tab_stop_size[NUMTABS]; /* tabstops to align option values */
|
||||||
|
int menu_cx; /* menu width */
|
||||||
|
} menu;
|
||||||
|
|
||||||
|
struct menu_text {
|
||||||
|
TCHAR *text;
|
||||||
|
SIZE text_box_size;
|
||||||
|
} text;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct mswin_nethack_menu_window {
|
typedef struct mswin_nethack_menu_window {
|
||||||
int type; /* MENU_TYPE_TEXT or MENU_TYPE_MENU */
|
int type; /* MENU_TYPE_TEXT or MENU_TYPE_MENU */
|
||||||
int how; /* for menus: PICK_NONE, PICK_ONE, PICK_ANY */
|
int how; /* for menus: PICK_NONE, PICK_ONE, PICK_ANY */
|
||||||
|
|
||||||
union {
|
union menu_innards menui;
|
||||||
struct menu_list {
|
|
||||||
int size; /* number of items in items[] */
|
|
||||||
int allocated; /* number of allocated slots in items[] */
|
|
||||||
PNHMenuItem items; /* menu items */
|
|
||||||
char gacc[QBUFSZ]; /* group accelerators */
|
|
||||||
BOOL counting; /* counting flag */
|
|
||||||
char prompt[QBUFSZ]; /* menu prompt */
|
|
||||||
int tab_stop_size[NUMTABS]; /* tabstops to align option values */
|
|
||||||
int menu_cx; /* menu width */
|
|
||||||
} menu;
|
|
||||||
|
|
||||||
struct menu_text {
|
|
||||||
TCHAR *text;
|
|
||||||
SIZE text_box_size;
|
|
||||||
} text;
|
|
||||||
};
|
|
||||||
int result;
|
int result;
|
||||||
int done;
|
int done;
|
||||||
|
|
||||||
@@ -162,23 +164,23 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
|
|||||||
if (data->type == MENU_TYPE_MENU) {
|
if (data->type == MENU_TYPE_MENU) {
|
||||||
char next_char = 'a';
|
char next_char = 'a';
|
||||||
|
|
||||||
data->menu.gacc[0] = '\0';
|
data->menui.menu.gacc[0] = '\0';
|
||||||
ap = data->menu.gacc;
|
ap = data->menui.menu.gacc;
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (data->menu.items[i].accelerator != 0) {
|
if (data->menui.menu.items[i].accelerator != 0) {
|
||||||
if (isalpha(data->menu.items[i].accelerator)) {
|
if (isalpha(data->menui.menu.items[i].accelerator)) {
|
||||||
next_char = (char)(data->menu.items[i].accelerator + 1);
|
next_char = (char)(data->menui.menu.items[i].accelerator + 1);
|
||||||
}
|
}
|
||||||
} else if (NHMENU_IS_SELECTABLE(data->menu.items[i])) {
|
} else if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])) {
|
||||||
if (isalpha(next_char)) {
|
if (isalpha(next_char)) {
|
||||||
data->menu.items[i].accelerator = next_char;
|
data->menui.menu.items[i].accelerator = next_char;
|
||||||
} else {
|
} else {
|
||||||
if (next_char > 'z')
|
if (next_char > 'z')
|
||||||
next_char = 'A';
|
next_char = 'A';
|
||||||
else if (next_char > 'Z')
|
else if (next_char > 'Z')
|
||||||
next_char = 'a';
|
next_char = 'a';
|
||||||
|
|
||||||
data->menu.items[i].accelerator = next_char;
|
data->menui.menu.items[i].accelerator = next_char;
|
||||||
}
|
}
|
||||||
|
|
||||||
next_char++;
|
next_char++;
|
||||||
@@ -186,12 +188,12 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* collect group accelerators */
|
/* collect group accelerators */
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (data->how != PICK_NONE) {
|
if (data->how != PICK_NONE) {
|
||||||
if (data->menu.items[i].group_accel
|
if (data->menui.menu.items[i].group_accel
|
||||||
&& !strchr(data->menu.gacc,
|
&& !strchr(data->menui.menu.gacc,
|
||||||
data->menu.items[i].group_accel)) {
|
data->menui.menu.items[i].group_accel)) {
|
||||||
*ap++ = data->menu.items[i].group_accel;
|
*ap++ = data->menui.menu.items[i].group_accel;
|
||||||
*ap = '\x0';
|
*ap = '\x0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,9 +221,9 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
|
|||||||
} else if (how == PICK_ONE || how == PICK_ANY) {
|
} else if (how == PICK_ONE || how == PICK_ANY) {
|
||||||
/* count selected items */
|
/* count selected items */
|
||||||
ret_val = 0;
|
ret_val = 0;
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (NHMENU_IS_SELECTABLE(data->menu.items[i])
|
if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
|
||||||
&& NHMENU_IS_SELECTED(data->menu.items[i])) {
|
&& NHMENU_IS_SELECTED(data->menui.menu.items[i])) {
|
||||||
ret_val++;
|
ret_val++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -234,12 +236,12 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
|
|||||||
panic("out of memory");
|
panic("out of memory");
|
||||||
|
|
||||||
sel_ind = 0;
|
sel_ind = 0;
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (NHMENU_IS_SELECTABLE(data->menu.items[i])
|
if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
|
||||||
&& NHMENU_IS_SELECTED(data->menu.items[i])) {
|
&& NHMENU_IS_SELECTED(data->menui.menu.items[i])) {
|
||||||
selected[sel_ind].item =
|
selected[sel_ind].item =
|
||||||
data->menu.items[i].identifier;
|
data->menui.menu.items[i].identifier;
|
||||||
selected[sel_ind].count = data->menu.items[i].count;
|
selected[sel_ind].count = data->menui.menu.items[i].count;
|
||||||
sel_ind++;
|
sel_ind++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -259,10 +261,10 @@ mswin_menu_window_select_menu(HWND hWnd, int how, MENU_ITEM_P **_selected,
|
|||||||
*/
|
*/
|
||||||
if (iflags.perm_invent && mswin_winid_from_handle(hWnd) == WIN_INVEN
|
if (iflags.perm_invent && mswin_winid_from_handle(hWnd) == WIN_INVEN
|
||||||
&& how != PICK_NONE) {
|
&& how != PICK_NONE) {
|
||||||
data->menu.prompt[0] = '\0';
|
data->menui.menu.prompt[0] = '\0';
|
||||||
SetMenuListType(hWnd, PICK_NONE);
|
SetMenuListType(hWnd, PICK_NONE);
|
||||||
for (i = 0; i < data->menu.size; i++)
|
for (i = 0; i < data->menui.menu.size; i++)
|
||||||
data->menu.items[i].count = 0;
|
data->menui.menu.items[i].count = 0;
|
||||||
LayoutMenu(hWnd);
|
LayoutMenu(hWnd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -362,7 +364,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
if (data->type == MENU_TYPE_MENU
|
if (data->type == MENU_TYPE_MENU
|
||||||
&& (data->how == PICK_ONE || data->how == PICK_ANY)
|
&& (data->how == PICK_ONE || data->how == PICK_ANY)
|
||||||
&& data->menu.counting) {
|
&& data->menui.menu.counting) {
|
||||||
HWND list;
|
HWND list;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -397,9 +399,9 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
case LVN_ITEMACTIVATE: {
|
case LVN_ITEMACTIVATE: {
|
||||||
LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW) lParam;
|
LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW) lParam;
|
||||||
if (data->how == PICK_ONE) {
|
if (data->how == PICK_ONE) {
|
||||||
if (lpnmlv->iItem >= 0 && lpnmlv->iItem < data->menu.size
|
if (lpnmlv->iItem >= 0 && lpnmlv->iItem < data->menui.menu.size
|
||||||
&& NHMENU_IS_SELECTABLE(
|
&& NHMENU_IS_SELECTABLE(
|
||||||
data->menu.items[lpnmlv->iItem])) {
|
data->menui.menu.items[lpnmlv->iItem])) {
|
||||||
SelectMenuItem(lpnmlv->hdr.hwndFrom, data,
|
SelectMenuItem(lpnmlv->hdr.hwndFrom, data,
|
||||||
lpnmlv->iItem, -1);
|
lpnmlv->iItem, -1);
|
||||||
data->done = 1;
|
data->done = 1;
|
||||||
@@ -416,7 +418,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
SelectMenuItem(
|
SelectMenuItem(
|
||||||
lpnmitem->hdr.hwndFrom, data, lpnmitem->iItem,
|
lpnmitem->hdr.hwndFrom, data, lpnmitem->iItem,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[lpnmitem->iItem])
|
NHMENU_IS_SELECTED(data->menui.menu.items[lpnmitem->iItem])
|
||||||
? 0
|
? 0
|
||||||
: -1);
|
: -1);
|
||||||
}
|
}
|
||||||
@@ -430,7 +432,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (data->how == PICK_ONE || data->how == PICK_ANY) {
|
if (data->how == PICK_ONE || data->how == PICK_ANY) {
|
||||||
data->menu.items[lpnmlv->iItem].has_focus =
|
data->menui.menu.items[lpnmlv->iItem].has_focus =
|
||||||
!!(lpnmlv->uNewState & LVIS_FOCUSED);
|
!!(lpnmlv->uNewState & LVIS_FOCUSED);
|
||||||
ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
|
ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
|
||||||
lpnmlv->iItem);
|
lpnmlv->iItem);
|
||||||
@@ -447,7 +449,7 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
/* check item focus */
|
/* check item focus */
|
||||||
if (data->how == PICK_ONE || data->how == PICK_ANY) {
|
if (data->how == PICK_ONE || data->how == PICK_ANY) {
|
||||||
data->menu.items[lpnmlv->iItem].has_focus =
|
data->menui.menu.items[lpnmlv->iItem].has_focus =
|
||||||
!!(lpnmlv->uNewState & LVIS_FOCUSED);
|
!!(lpnmlv->uNewState & LVIS_FOCUSED);
|
||||||
ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
|
ListView_RedrawItems(lpnmlv->hdr.hwndFrom, lpnmlv->iItem,
|
||||||
lpnmlv->iItem);
|
lpnmlv->iItem);
|
||||||
@@ -512,8 +514,8 @@ MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
DeleteObject(data->bmpCheckedCount);
|
DeleteObject(data->bmpCheckedCount);
|
||||||
DeleteObject(data->bmpNotChecked);
|
DeleteObject(data->bmpNotChecked);
|
||||||
if (data->type == MENU_TYPE_TEXT) {
|
if (data->type == MENU_TYPE_TEXT) {
|
||||||
if (data->text.text)
|
if (data->menui.text.text)
|
||||||
free(data->text.text);
|
free(data->menui.text.text);
|
||||||
}
|
}
|
||||||
free(data);
|
free(data);
|
||||||
SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) 0);
|
SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) 0);
|
||||||
@@ -542,27 +544,27 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
if (data->type != MENU_TYPE_TEXT)
|
if (data->type != MENU_TYPE_TEXT)
|
||||||
SetMenuType(hWnd, MENU_TYPE_TEXT);
|
SetMenuType(hWnd, MENU_TYPE_TEXT);
|
||||||
|
|
||||||
if (!data->text.text) {
|
if (!data->menui.text.text) {
|
||||||
text_size = strlen(msg_data->text) + 4;
|
text_size = strlen(msg_data->text) + 4;
|
||||||
data->text.text =
|
data->menui.text.text =
|
||||||
(TCHAR *) malloc(text_size * sizeof(data->text.text[0]));
|
(TCHAR *) malloc(text_size * sizeof(data->menui.text.text[0]));
|
||||||
ZeroMemory(data->text.text,
|
ZeroMemory(data->menui.text.text,
|
||||||
text_size * sizeof(data->text.text[0]));
|
text_size * sizeof(data->menui.text.text[0]));
|
||||||
} else {
|
} else {
|
||||||
text_size = _tcslen(data->text.text) + strlen(msg_data->text) + 4;
|
text_size = _tcslen(data->menui.text.text) + strlen(msg_data->text) + 4;
|
||||||
data->text.text = (TCHAR *) realloc(
|
data->menui.text.text = (TCHAR *) realloc(
|
||||||
data->text.text, text_size * sizeof(data->text.text[0]));
|
data->menui.text.text, text_size * sizeof(data->menui.text.text[0]));
|
||||||
}
|
}
|
||||||
if (!data->text.text)
|
if (!data->menui.text.text)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
_tcscat(data->text.text, NH_A2W(msg_data->text, wbuf, BUFSZ));
|
_tcscat(data->menui.text.text, NH_A2W(msg_data->text, wbuf, BUFSZ));
|
||||||
_tcscat(data->text.text, TEXT("\r\n"));
|
_tcscat(data->menui.text.text, TEXT("\r\n"));
|
||||||
|
|
||||||
text_view = GetDlgItem(hWnd, IDC_MENU_TEXT);
|
text_view = GetDlgItem(hWnd, IDC_MENU_TEXT);
|
||||||
if (!text_view)
|
if (!text_view)
|
||||||
panic("cannot get text view window");
|
panic("cannot get text view window");
|
||||||
SetWindowText(text_view, data->text.text);
|
SetWindowText(text_view, data->menui.text.text);
|
||||||
|
|
||||||
/* calculate dimensions of the added line of text */
|
/* calculate dimensions of the added line of text */
|
||||||
hdc = GetDC(text_view);
|
hdc = GetDC(text_view);
|
||||||
@@ -572,9 +574,9 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
DrawTextA(hdc, msg_data->text, strlen(msg_data->text), &text_rt,
|
DrawTextA(hdc, msg_data->text, strlen(msg_data->text), &text_rt,
|
||||||
DT_CALCRECT | DT_TOP | DT_LEFT | DT_NOPREFIX
|
DT_CALCRECT | DT_TOP | DT_LEFT | DT_NOPREFIX
|
||||||
| DT_SINGLELINE);
|
| DT_SINGLELINE);
|
||||||
data->text.text_box_size.cx =
|
data->menui.text.text_box_size.cx =
|
||||||
max(text_rt.right - text_rt.left, data->text.text_box_size.cx);
|
max(text_rt.right - text_rt.left, data->menui.text.text_box_size.cx);
|
||||||
data->text.text_box_size.cy += text_rt.bottom - text_rt.top;
|
data->menui.text.text_box_size.cy += text_rt.bottom - text_rt.top;
|
||||||
SelectObject(hdc, saveFont);
|
SelectObject(hdc, saveFont);
|
||||||
ReleaseDC(text_view, hdc);
|
ReleaseDC(text_view, hdc);
|
||||||
} break;
|
} break;
|
||||||
@@ -584,16 +586,16 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
if (data->type != MENU_TYPE_MENU)
|
if (data->type != MENU_TYPE_MENU)
|
||||||
SetMenuType(hWnd, MENU_TYPE_MENU);
|
SetMenuType(hWnd, MENU_TYPE_MENU);
|
||||||
|
|
||||||
if (data->menu.items)
|
if (data->menui.menu.items)
|
||||||
free(data->menu.items);
|
free(data->menui.menu.items);
|
||||||
data->how = PICK_NONE;
|
data->how = PICK_NONE;
|
||||||
data->menu.items = NULL;
|
data->menui.menu.items = NULL;
|
||||||
data->menu.size = 0;
|
data->menui.menu.size = 0;
|
||||||
data->menu.allocated = 0;
|
data->menui.menu.allocated = 0;
|
||||||
data->done = 0;
|
data->done = 0;
|
||||||
data->result = 0;
|
data->result = 0;
|
||||||
for (i = 0; i < NUMTABS; ++i)
|
for (i = 0; i < NUMTABS; ++i)
|
||||||
data->menu.tab_stop_size[i] = MIN_TABSTOP_SIZE;
|
data->menui.menu.tab_stop_size[i] = MIN_TABSTOP_SIZE;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case MSNH_MSG_ADDMENU: {
|
case MSNH_MSG_ADDMENU: {
|
||||||
@@ -609,34 +611,34 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
if (data->type != MENU_TYPE_MENU)
|
if (data->type != MENU_TYPE_MENU)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (data->menu.size == data->menu.allocated) {
|
if (data->menui.menu.size == data->menui.menu.allocated) {
|
||||||
data->menu.allocated += 10;
|
data->menui.menu.allocated += 10;
|
||||||
data->menu.items = (PNHMenuItem) realloc(
|
data->menui.menu.items = (PNHMenuItem) realloc(
|
||||||
data->menu.items, data->menu.allocated * sizeof(NHMenuItem));
|
data->menui.menu.items, data->menui.menu.allocated * sizeof(NHMenuItem));
|
||||||
}
|
}
|
||||||
|
|
||||||
new_item = data->menu.size;
|
new_item = data->menui.menu.size;
|
||||||
ZeroMemory(&data->menu.items[new_item],
|
ZeroMemory(&data->menui.menu.items[new_item],
|
||||||
sizeof(data->menu.items[new_item]));
|
sizeof(data->menui.menu.items[new_item]));
|
||||||
data->menu.items[new_item].glyphinfo = msg_data->glyphinfo;
|
data->menui.menu.items[new_item].glyphinfo = msg_data->glyphinfo;
|
||||||
data->menu.items[new_item].identifier = *msg_data->identifier;
|
data->menui.menu.items[new_item].identifier = *msg_data->identifier;
|
||||||
data->menu.items[new_item].accelerator = msg_data->accelerator;
|
data->menui.menu.items[new_item].accelerator = msg_data->accelerator;
|
||||||
data->menu.items[new_item].group_accel = msg_data->group_accel;
|
data->menui.menu.items[new_item].group_accel = msg_data->group_accel;
|
||||||
data->menu.items[new_item].attr = msg_data->attr;
|
data->menui.menu.items[new_item].attr = msg_data->attr;
|
||||||
strncpy(data->menu.items[new_item].str, msg_data->str,
|
strncpy(data->menui.menu.items[new_item].str, msg_data->str,
|
||||||
NHMENU_STR_SIZE);
|
NHMENU_STR_SIZE);
|
||||||
/* prevent & being interpreted as a mnemonic start */
|
/* prevent & being interpreted as a mnemonic start */
|
||||||
strNsubst(data->menu.items[new_item].str, "&", "&&", 0);
|
strNsubst(data->menui.menu.items[new_item].str, "&", "&&", 0);
|
||||||
data->menu.items[new_item].presel = msg_data->presel;
|
data->menui.menu.items[new_item].presel = msg_data->presel;
|
||||||
data->menu.items[new_item].itemflags = msg_data->itemflags;
|
data->menui.menu.items[new_item].itemflags = msg_data->itemflags;
|
||||||
|
|
||||||
/* calculate tabstop size */
|
/* calculate tabstop size */
|
||||||
hDC = GetDC(hWnd);
|
hDC = GetDC(hWnd);
|
||||||
cached_font * font = mswin_get_font(NHW_MENU, msg_data->attr, hDC, FALSE);
|
cached_font * font = mswin_get_font(NHW_MENU, msg_data->attr, hDC, FALSE);
|
||||||
saveFont = SelectObject(hDC, font->hFont);
|
saveFont = SelectObject(hDC, font->hFont);
|
||||||
GetTextMetrics(hDC, &tm);
|
GetTextMetrics(hDC, &tm);
|
||||||
p1 = data->menu.items[new_item].str;
|
p1 = data->menui.menu.items[new_item].str;
|
||||||
p = strchr(data->menu.items[new_item].str, '\t');
|
p = strchr(data->menui.menu.items[new_item].str, '\t');
|
||||||
column = 0;
|
column = 0;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
TCHAR wbuf[BUFSZ];
|
TCHAR wbuf[BUFSZ];
|
||||||
@@ -647,11 +649,11 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
DrawText(hDC, NH_A2W(p1, wbuf, BUFSZ), strlen(p1), &drawRect,
|
DrawText(hDC, NH_A2W(p1, wbuf, BUFSZ), strlen(p1), &drawRect,
|
||||||
DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_EXPANDTABS
|
DT_CALCRECT | DT_LEFT | DT_VCENTER | DT_EXPANDTABS
|
||||||
| DT_SINGLELINE);
|
| DT_SINGLELINE);
|
||||||
data->menu.tab_stop_size[column] =
|
data->menui.menu.tab_stop_size[column] =
|
||||||
max(data->menu.tab_stop_size[column],
|
max(data->menui.menu.tab_stop_size[column],
|
||||||
drawRect.right - drawRect.left);
|
drawRect.right - drawRect.left);
|
||||||
|
|
||||||
menuitemwidth += data->menu.tab_stop_size[column];
|
menuitemwidth += data->menui.menu.tab_stop_size[column];
|
||||||
|
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
*p = '\t';
|
*p = '\t';
|
||||||
@@ -671,22 +673,22 @@ onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
ReleaseDC(hWnd, hDC);
|
ReleaseDC(hWnd, hDC);
|
||||||
|
|
||||||
/* calculate new menu width */
|
/* calculate new menu width */
|
||||||
data->menu.menu_cx =
|
data->menui.menu.menu_cx =
|
||||||
max(data->menu.menu_cx,
|
max(data->menui.menu.menu_cx,
|
||||||
2 * TILE_X + menuitemwidth
|
2 * TILE_X + menuitemwidth
|
||||||
+ (tm.tmAveCharWidth + tm.tmOverhang) * 12);
|
+ (tm.tmAveCharWidth + tm.tmOverhang) * 12);
|
||||||
|
|
||||||
/* increment size */
|
/* increment size */
|
||||||
data->menu.size++;
|
data->menui.menu.size++;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case MSNH_MSG_ENDMENU: {
|
case MSNH_MSG_ENDMENU: {
|
||||||
PMSNHMsgEndMenu msg_data = (PMSNHMsgEndMenu) lParam;
|
PMSNHMsgEndMenu msg_data = (PMSNHMsgEndMenu) lParam;
|
||||||
if (msg_data->text) {
|
if (msg_data->text) {
|
||||||
strncpy(data->menu.prompt, msg_data->text,
|
strncpy(data->menui.menu.prompt, msg_data->text,
|
||||||
sizeof(data->menu.prompt) - 1);
|
sizeof(data->menui.menu.prompt) - 1);
|
||||||
} else {
|
} else {
|
||||||
ZeroMemory(data->menu.prompt, sizeof(data->menu.prompt));
|
ZeroMemory(data->menui.menu.prompt, sizeof(data->menui.menu.prompt));
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@@ -768,7 +770,7 @@ LayoutMenu(HWND hWnd)
|
|||||||
ListView_SetColumnWidth(
|
ListView_SetColumnWidth(
|
||||||
GetMenuControl(hWnd), 0,
|
GetMenuControl(hWnd), 0,
|
||||||
max(clrt.right - clrt.left - GetSystemMetrics(SM_CXVSCROLL),
|
max(clrt.right - clrt.left - GetSystemMetrics(SM_CXVSCROLL),
|
||||||
data->menu.menu_cx));
|
data->menui.menu.menu_cx));
|
||||||
}
|
}
|
||||||
|
|
||||||
MoveWindow(GetMenuControl(hWnd), pt_elem.x, pt_elem.y, sz_elem.cx,
|
MoveWindow(GetMenuControl(hWnd), pt_elem.x, pt_elem.y, sz_elem.cx,
|
||||||
@@ -845,7 +847,7 @@ SetMenuListType(HWND hWnd, int how)
|
|||||||
panic("how should be one of PICK_NONE, PICK_ONE or PICK_ANY");
|
panic("how should be one of PICK_NONE, PICK_ONE or PICK_ANY");
|
||||||
};
|
};
|
||||||
|
|
||||||
if (strlen(data->menu.prompt) == 0) {
|
if (strlen(data->menui.menu.prompt) == 0) {
|
||||||
dwStyles |= LVS_NOCOLUMNHEADER;
|
dwStyles |= LVS_NOCOLUMNHEADER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -882,22 +884,22 @@ SetMenuListType(HWND hWnd, int how)
|
|||||||
ZeroMemory(&lvcol, sizeof(lvcol));
|
ZeroMemory(&lvcol, sizeof(lvcol));
|
||||||
lvcol.mask = LVCF_WIDTH | LVCF_TEXT;
|
lvcol.mask = LVCF_WIDTH | LVCF_TEXT;
|
||||||
lvcol.cx = monitorInfo.width;
|
lvcol.cx = monitorInfo.width;
|
||||||
lvcol.pszText = NH_A2W(data->menu.prompt, wbuf, BUFSZ);
|
lvcol.pszText = NH_A2W(data->menui.menu.prompt, wbuf, BUFSZ);
|
||||||
ListView_InsertColumn(control, 0, &lvcol);
|
ListView_InsertColumn(control, 0, &lvcol);
|
||||||
|
|
||||||
/* add items to the list view */
|
/* add items to the list view */
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
LVITEM lvitem;
|
LVITEM lvitem;
|
||||||
ZeroMemory(&lvitem, sizeof(lvitem));
|
ZeroMemory(&lvitem, sizeof(lvitem));
|
||||||
sprintf(buf, "%c - %s", max(data->menu.items[i].accelerator, ' '),
|
sprintf(buf, "%c - %s", max(data->menui.menu.items[i].accelerator, ' '),
|
||||||
data->menu.items[i].str);
|
data->menui.menu.items[i].str);
|
||||||
|
|
||||||
lvitem.mask = LVIF_PARAM | LVIF_STATE | LVIF_TEXT;
|
lvitem.mask = LVIF_PARAM | LVIF_STATE | LVIF_TEXT;
|
||||||
lvitem.iItem = i;
|
lvitem.iItem = i;
|
||||||
lvitem.iSubItem = 0;
|
lvitem.iSubItem = 0;
|
||||||
lvitem.state = data->menu.items[i].presel ? LVIS_SELECTED : 0;
|
lvitem.state = data->menui.menu.items[i].presel ? LVIS_SELECTED : 0;
|
||||||
lvitem.pszText = NH_A2W(buf, wbuf, BUFSZ);
|
lvitem.pszText = NH_A2W(buf, wbuf, BUFSZ);
|
||||||
lvitem.lParam = (LPARAM) &data->menu.items[i];
|
lvitem.lParam = (LPARAM) &data->menui.menu.items[i];
|
||||||
nItem = (int) SendMessage(control, LB_ADDSTRING, (WPARAM) 0,
|
nItem = (int) SendMessage(control, LB_ADDSTRING, (WPARAM) 0,
|
||||||
(LPARAM) buf);
|
(LPARAM) buf);
|
||||||
if (ListView_InsertItem(control, &lvitem) == -1) {
|
if (ListView_InsertItem(control, &lvitem) == -1) {
|
||||||
@@ -951,8 +953,8 @@ onMeasureItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
/* Set the height of the list box items to max height of the individual
|
/* Set the height of the list box items to max height of the individual
|
||||||
* items */
|
* items */
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (NHMENU_HAS_GLYPH(data->menu.items[i])
|
if (NHMENU_HAS_GLYPH(data->menui.menu.items[i])
|
||||||
&& !IS_MAP_ASCII(iflags.wc_map_mode)) {
|
&& !IS_MAP_ASCII(iflags.wc_map_mode)) {
|
||||||
lpmis->itemHeight =
|
lpmis->itemHeight =
|
||||||
max(lpmis->itemHeight,
|
max(lpmis->itemHeight,
|
||||||
@@ -1006,7 +1008,7 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||||
|
|
||||||
item = &data->menu.items[lpdis->itemID];
|
item = &data->menui.menu.items[lpdis->itemID];
|
||||||
|
|
||||||
tileDC = CreateCompatibleDC(lpdis->hDC);
|
tileDC = CreateCompatibleDC(lpdis->hDC);
|
||||||
cached_font * font = mswin_get_font(NHW_MENU, item->attr, lpdis->hDC, FALSE);
|
cached_font * font = mswin_get_font(NHW_MENU, item->attr, lpdis->hDC, FALSE);
|
||||||
@@ -1046,7 +1048,7 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tileYScaled) / 2;
|
y = (lpdis->rcItem.bottom + lpdis->rcItem.top - tileYScaled) / 2;
|
||||||
bmpSaved = SelectBitmap(data->bmpDC, bmpCheck);
|
bmpSaved = SelectBitmap(data->bmpDC, bmpCheck);
|
||||||
StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
|
StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
|
||||||
data->bmpDC, 0, 0, CHECK_WIDTH, CHECK_HEIGHT, SRCCOPY);
|
data->bmpDC, 0, 0, CHECK_WIDTH, CHECK_HEIGHT, SRCCOPY);
|
||||||
SelectObject(data->bmpDC, bmpSaved);
|
SelectObject(data->bmpDC, bmpSaved);
|
||||||
}
|
}
|
||||||
@@ -1079,7 +1081,10 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
if (NHMENU_HAS_GLYPH(*item)) {
|
if (NHMENU_HAS_GLYPH(*item)) {
|
||||||
if (!IS_MAP_ASCII(iflags.wc_map_mode)) {
|
if (!IS_MAP_ASCII(iflags.wc_map_mode)) {
|
||||||
HGDIOBJ saveBmp;
|
HGDIOBJ saveBmp;
|
||||||
double monitorScale = win10_monitor_scale(hWnd);
|
double monitorScale2;
|
||||||
|
|
||||||
|
nhUse(monitorScale2);
|
||||||
|
monitorScale2 = win10_monitor_scale(hWnd);
|
||||||
|
|
||||||
saveBmp = SelectObject(tileDC, GetNHApp()->bmpMapTiles);
|
saveBmp = SelectObject(tileDC, GetNHApp()->bmpMapTiles);
|
||||||
ntile = glyph2tile[item->glyphinfo.glyph];
|
ntile = glyph2tile[item->glyphinfo.glyph];
|
||||||
@@ -1092,13 +1097,13 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
if (GetNHApp()->bmpMapTiles == GetNHApp()->bmpTiles) {
|
if (GetNHApp()->bmpMapTiles == GetNHApp()->bmpTiles) {
|
||||||
/* using original nethack tiles - apply image transparently */
|
/* using original nethack tiles - apply image transparently */
|
||||||
(*GetNHApp()->lpfnTransparentBlt)(lpdis->hDC, x, y,
|
(*GetNHApp()->lpfnTransparentBlt)(lpdis->hDC, x, y,
|
||||||
tileXScaled, tileYScaled,
|
tileXScaled, tileYScaled,
|
||||||
tileDC, t_x, t_y, TILE_X, TILE_Y,
|
tileDC, t_x, t_y, TILE_X, TILE_Y,
|
||||||
TILE_BK_COLOR);
|
TILE_BK_COLOR);
|
||||||
} else {
|
} else {
|
||||||
/* using custom tiles - simple blt */
|
/* using custom tiles - simple blt */
|
||||||
StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
|
StretchBlt(lpdis->hDC, x, y, tileXScaled, tileYScaled,
|
||||||
tileDC, t_x, t_y, GetNHApp()->mapTile_X, GetNHApp()->mapTile_Y, SRCCOPY);
|
tileDC, t_x, t_y, GetNHApp()->mapTile_X, GetNHApp()->mapTile_Y, SRCCOPY);
|
||||||
}
|
}
|
||||||
SelectObject(tileDC, saveBmp);
|
SelectObject(tileDC, saveBmp);
|
||||||
@@ -1136,13 +1141,13 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
p = strchr(item->str, '\t');
|
p = strchr(item->str, '\t');
|
||||||
column = 0;
|
column = 0;
|
||||||
SetRect(&drawRect, x, lpdis->rcItem.top,
|
SetRect(&drawRect, x, lpdis->rcItem.top,
|
||||||
min(x + data->menu.tab_stop_size[0], lpdis->rcItem.right),
|
min(x + data->menui.menu.tab_stop_size[0], lpdis->rcItem.right),
|
||||||
lpdis->rcItem.bottom);
|
lpdis->rcItem.bottom);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
TCHAR wbuf[BUFSZ];
|
TCHAR wbuf2[BUFSZ];
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
*p = '\0'; /* for time being, view tab field as zstring */
|
*p = '\0'; /* for time being, view tab field as zstring */
|
||||||
DrawText(lpdis->hDC, NH_A2W(p1, wbuf, BUFSZ), strlen(p1), &drawRect,
|
DrawText(lpdis->hDC, NH_A2W(p1, wbuf2, BUFSZ), strlen(p1), &drawRect,
|
||||||
DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
DT_LEFT | DT_VCENTER | DT_SINGLELINE);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
*p = '\t';
|
*p = '\t';
|
||||||
@@ -1153,25 +1158,25 @@ onDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
p = strchr(p1, '\t');
|
p = strchr(p1, '\t');
|
||||||
drawRect.left = drawRect.right + TAB_SEPARATION;
|
drawRect.left = drawRect.right + TAB_SEPARATION;
|
||||||
++column;
|
++column;
|
||||||
drawRect.right = min(drawRect.left + data->menu.tab_stop_size[column],
|
drawRect.right = min(drawRect.left + data->menui.menu.tab_stop_size[column],
|
||||||
lpdis->rcItem.right);
|
lpdis->rcItem.right);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw focused item */
|
/* draw focused item */
|
||||||
if (item->has_focus || (NHMENU_IS_SELECTABLE(*item)
|
if (item->has_focus || (NHMENU_IS_SELECTABLE(*item)
|
||||||
&& data->menu.items[lpdis->itemID].count != -1)) {
|
&& data->menui.menu.items[lpdis->itemID].count != -1)) {
|
||||||
RECT client_rt;
|
RECT client_rt;
|
||||||
|
|
||||||
GetClientRect(lpdis->hwndItem, &client_rt);
|
GetClientRect(lpdis->hwndItem, &client_rt);
|
||||||
client_rt.right = min(client_rt.right, lpdis->rcItem.right);
|
client_rt.right = min(client_rt.right, lpdis->rcItem.right);
|
||||||
if (NHMENU_IS_SELECTABLE(*item)
|
if (NHMENU_IS_SELECTABLE(*item)
|
||||||
&& data->menu.items[lpdis->itemID].count != 0
|
&& data->menui.menu.items[lpdis->itemID].count != 0
|
||||||
&& item->glyphinfo.glyph != NO_GLYPH) {
|
&& item->glyphinfo.glyph != NO_GLYPH) {
|
||||||
if (data->menu.items[lpdis->itemID].count == -1) {
|
if (data->menui.menu.items[lpdis->itemID].count == -1) {
|
||||||
_stprintf(wbuf, TEXT("Count: All"));
|
_stprintf(wbuf, TEXT("Count: All"));
|
||||||
} else {
|
} else {
|
||||||
_stprintf(wbuf, TEXT("Count: %d"),
|
_stprintf(wbuf, TEXT("Count: %d"),
|
||||||
data->menu.items[lpdis->itemID].count);
|
data->menui.menu.items[lpdis->itemID].count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TOOD: add blinking for blink text */
|
/* TOOD: add blinking for blink text */
|
||||||
@@ -1231,8 +1236,8 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
data = (PNHMenuWindow) GetWindowLongPtr(hWnd, GWLP_USERDATA);
|
||||||
|
|
||||||
is_accelerator = FALSE;
|
is_accelerator = FALSE;
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (data->menu.items[i].accelerator == ch) {
|
if (data->menui.menu.items[i].accelerator == ch) {
|
||||||
is_accelerator = TRUE;
|
is_accelerator = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1253,7 +1258,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
case MENU_LAST_PAGE:
|
case MENU_LAST_PAGE:
|
||||||
i = max(0, data->menu.size - 1);
|
i = max(0, data->menui.menu.size - 1);
|
||||||
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
||||||
ListView_EnsureVisible(hwndList, i, FALSE);
|
ListView_EnsureVisible(hwndList, i, FALSE);
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1263,10 +1268,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
pageSize = ListView_GetCountPerPage(hwndList);
|
pageSize = ListView_GetCountPerPage(hwndList);
|
||||||
curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
||||||
/* Focus down one page */
|
/* Focus down one page */
|
||||||
i = min(curIndex + pageSize, data->menu.size - 1);
|
i = min(curIndex + pageSize, data->menui.menu.size - 1);
|
||||||
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
||||||
/* Scrollpos down one page */
|
/* Scrollpos down one page */
|
||||||
i = min(topIndex + (2 * pageSize - 1), data->menu.size - 1);
|
i = min(topIndex + (2 * pageSize - 1), data->menui.menu.size - 1);
|
||||||
ListView_EnsureVisible(hwndList, i, FALSE);
|
ListView_EnsureVisible(hwndList, i, FALSE);
|
||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
@@ -1285,7 +1290,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
case MENU_SELECT_ALL:
|
case MENU_SELECT_ALL:
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
reset_menu_count(hwndList, data);
|
reset_menu_count(hwndList, data);
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
SelectMenuItem(hwndList, data, i, -1);
|
SelectMenuItem(hwndList, data, i, -1);
|
||||||
}
|
}
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1295,7 +1300,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
case MENU_UNSELECT_ALL:
|
case MENU_UNSELECT_ALL:
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
reset_menu_count(hwndList, data);
|
reset_menu_count(hwndList, data);
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
SelectMenuItem(hwndList, data, i, 0);
|
SelectMenuItem(hwndList, data, i, 0);
|
||||||
}
|
}
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1305,11 +1310,11 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
case MENU_INVERT_ALL:
|
case MENU_INVERT_ALL:
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
reset_menu_count(hwndList, data);
|
reset_menu_count(hwndList, data);
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (menuitem_invert_test(0, data->menu.items[i].itemflags,
|
if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i])))
|
NHMENU_IS_SELECTED(data->menui.menu.items[i])))
|
||||||
SelectMenuItem(hwndList, data, i,
|
SelectMenuItem(hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
|
||||||
: -1);
|
: -1);
|
||||||
}
|
}
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1323,7 +1328,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
topIndex = ListView_GetTopIndex(hwndList);
|
topIndex = ListView_GetTopIndex(hwndList);
|
||||||
pageSize = ListView_GetCountPerPage(hwndList);
|
pageSize = ListView_GetCountPerPage(hwndList);
|
||||||
from = max(0, topIndex);
|
from = max(0, topIndex);
|
||||||
to = min(data->menu.size, from + pageSize);
|
to = min(data->menui.menu.size, from + pageSize);
|
||||||
for (i = from; i < to; i++) {
|
for (i = from; i < to; i++) {
|
||||||
SelectMenuItem(hwndList, data, i, -1);
|
SelectMenuItem(hwndList, data, i, -1);
|
||||||
}
|
}
|
||||||
@@ -1338,7 +1343,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
topIndex = ListView_GetTopIndex(hwndList);
|
topIndex = ListView_GetTopIndex(hwndList);
|
||||||
pageSize = ListView_GetCountPerPage(hwndList);
|
pageSize = ListView_GetCountPerPage(hwndList);
|
||||||
from = max(0, topIndex);
|
from = max(0, topIndex);
|
||||||
to = min(data->menu.size, from + pageSize);
|
to = min(data->menui.menu.size, from + pageSize);
|
||||||
for (i = from; i < to; i++) {
|
for (i = from; i < to; i++) {
|
||||||
SelectMenuItem(hwndList, data, i, 0);
|
SelectMenuItem(hwndList, data, i, 0);
|
||||||
}
|
}
|
||||||
@@ -1353,12 +1358,12 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
topIndex = ListView_GetTopIndex(hwndList);
|
topIndex = ListView_GetTopIndex(hwndList);
|
||||||
pageSize = ListView_GetCountPerPage(hwndList);
|
pageSize = ListView_GetCountPerPage(hwndList);
|
||||||
from = max(0, topIndex);
|
from = max(0, topIndex);
|
||||||
to = min(data->menu.size, from + pageSize);
|
to = min(data->menui.menu.size, from + pageSize);
|
||||||
for (i = from; i < to; i++) {
|
for (i = from; i < to; i++) {
|
||||||
if (menuitem_invert_test(0, data->menu.items[i].itemflags,
|
if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i])))
|
NHMENU_IS_SELECTED(data->menui.menu.items[i])))
|
||||||
SelectMenuItem(hwndList, data, i,
|
SelectMenuItem(hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
|
||||||
: -1);
|
: -1);
|
||||||
}
|
}
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1377,13 +1382,13 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
SetFocus(hwndList); // set focus back to the list control
|
SetFocus(hwndList); // set focus back to the list control
|
||||||
if (!*buf || *buf == '\033')
|
if (!*buf || *buf == '\033')
|
||||||
return -2;
|
return -2;
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (NHMENU_IS_SELECTABLE(data->menu.items[i])
|
if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
|
||||||
&& strstr(data->menu.items[i].str, buf)) {
|
&& strstr(data->menui.menu.items[i].str, buf)) {
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
SelectMenuItem(
|
SelectMenuItem(
|
||||||
hwndList, data, i,
|
hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0 : -1);
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1);
|
||||||
} else if (data->how == PICK_ONE) {
|
} else if (data->how == PICK_ONE) {
|
||||||
SelectMenuItem(hwndList, data, i, -1);
|
SelectMenuItem(hwndList, data, i, -1);
|
||||||
ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
|
||||||
@@ -1418,10 +1423,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
pageSize = ListView_GetCountPerPage(hwndList);
|
pageSize = ListView_GetCountPerPage(hwndList);
|
||||||
curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
curIndex = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
||||||
/* Focus down one page */
|
/* Focus down one page */
|
||||||
i = min(curIndex + pageSize, data->menu.size - 1);
|
i = min(curIndex + pageSize, data->menui.menu.size - 1);
|
||||||
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
||||||
/* Scrollpos down one page */
|
/* Scrollpos down one page */
|
||||||
i = min(topIndex + (2 * pageSize - 1), data->menu.size - 1);
|
i = min(topIndex + (2 * pageSize - 1), data->menui.menu.size - 1);
|
||||||
ListView_EnsureVisible(hwndList, i, FALSE);
|
ListView_EnsureVisible(hwndList, i, FALSE);
|
||||||
|
|
||||||
return -2;
|
return -2;
|
||||||
@@ -1437,7 +1442,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
SelectMenuItem(
|
SelectMenuItem(
|
||||||
hwndList, data, i,
|
hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0 : -1);
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1445,18 +1450,18 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
|
|
||||||
accelerator:
|
accelerator:
|
||||||
default:
|
default:
|
||||||
if (strchr(data->menu.gacc, ch)
|
if (strchr(data->menui.menu.gacc, ch)
|
||||||
&& !(ch == '0' && data->menu.counting)) {
|
&& !(ch == '0' && data->menui.menu.counting)) {
|
||||||
/* matched a group accelerator */
|
/* matched a group accelerator */
|
||||||
if (data->how == PICK_ANY || data->how == PICK_ONE) {
|
if (data->how == PICK_ANY || data->how == PICK_ONE) {
|
||||||
reset_menu_count(hwndList, data);
|
reset_menu_count(hwndList, data);
|
||||||
for (i = 0; i < data->menu.size; i++) {
|
for (i = 0; i < data->menui.menu.size; i++) {
|
||||||
if (NHMENU_IS_SELECTABLE(data->menu.items[i])
|
if (NHMENU_IS_SELECTABLE(data->menui.menu.items[i])
|
||||||
&& data->menu.items[i].group_accel == ch) {
|
&& data->menui.menu.items[i].group_accel == ch) {
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
SelectMenuItem(
|
SelectMenuItem(
|
||||||
hwndList, data, i,
|
hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
|
||||||
: -1);
|
: -1);
|
||||||
} else if (data->how == PICK_ONE) {
|
} else if (data->how == PICK_ONE) {
|
||||||
SelectMenuItem(hwndList, data, i, -1);
|
SelectMenuItem(hwndList, data, i, -1);
|
||||||
@@ -1477,14 +1482,14 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
int count;
|
int count;
|
||||||
i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
count = data->menu.items[i].count;
|
count = data->menui.menu.items[i].count;
|
||||||
if (count == -1)
|
if (count == -1)
|
||||||
count = 0;
|
count = 0;
|
||||||
count *= 10L;
|
count *= 10L;
|
||||||
count += (int) (ch - '0');
|
count += (int) (ch - '0');
|
||||||
if (count != 0) /* ignore leading zeros */ {
|
if (count != 0) /* ignore leading zeros */ {
|
||||||
data->menu.counting = TRUE;
|
data->menui.menu.counting = TRUE;
|
||||||
data->menu.items[i].count = min(100000, count);
|
data->menui.menu.items[i].count = min(100000, count);
|
||||||
ListView_RedrawItems(hwndList, i,
|
ListView_RedrawItems(hwndList, i,
|
||||||
i); /* update count mark */
|
i); /* update count mark */
|
||||||
}
|
}
|
||||||
@@ -1496,15 +1501,15 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
|| is_accelerator) {
|
|| is_accelerator) {
|
||||||
if (data->how == PICK_ANY || data->how == PICK_ONE) {
|
if (data->how == PICK_ANY || data->how == PICK_ONE) {
|
||||||
topIndex = ListView_GetTopIndex(hwndList);
|
topIndex = ListView_GetTopIndex(hwndList);
|
||||||
if( topIndex < 0 || topIndex > data->menu.size ) break; // impossible?
|
if( topIndex < 0 || topIndex > data->menui.menu.size ) break; // impossible?
|
||||||
int iter = topIndex;
|
int iter = topIndex;
|
||||||
do {
|
do {
|
||||||
i = iter % data->menu.size;
|
i = iter % data->menui.menu.size;
|
||||||
if (data->menu.items[i].accelerator == ch) {
|
if (data->menui.menu.items[i].accelerator == ch) {
|
||||||
if (data->how == PICK_ANY) {
|
if (data->how == PICK_ANY) {
|
||||||
SelectMenuItem(
|
SelectMenuItem(
|
||||||
hwndList, data, i,
|
hwndList, data, i,
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0
|
||||||
: -1);
|
: -1);
|
||||||
ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED,
|
||||||
LVIS_FOCUSED);
|
LVIS_FOCUSED);
|
||||||
@@ -1517,7 +1522,7 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while( (++iter % data->menu.size) != topIndex );
|
} while( (++iter % data->menui.menu.size) != topIndex );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1549,10 +1554,10 @@ mswin_menu_window_size(HWND hWnd, LPSIZE sz)
|
|||||||
extra_cx = (wrt.right - wrt.left) - sz->cx;
|
extra_cx = (wrt.right - wrt.left) - sz->cx;
|
||||||
|
|
||||||
if (data->type == MENU_TYPE_MENU) {
|
if (data->type == MENU_TYPE_MENU) {
|
||||||
sz->cx = data->menu.menu_cx + GetSystemMetrics(SM_CXVSCROLL);
|
sz->cx = data->menui.menu.menu_cx + GetSystemMetrics(SM_CXVSCROLL);
|
||||||
} else {
|
} else {
|
||||||
/* Use the width of the text box */
|
/* Use the width of the text box */
|
||||||
sz->cx = data->text.text_box_size.cx
|
sz->cx = data->menui.text.text_box_size.cx
|
||||||
+ 2 * GetSystemMetrics(SM_CXVSCROLL);
|
+ 2 * GetSystemMetrics(SM_CXVSCROLL);
|
||||||
}
|
}
|
||||||
sz->cx += extra_cx;
|
sz->cx += extra_cx;
|
||||||
@@ -1569,18 +1574,18 @@ SelectMenuItem(HWND hwndList, PNHMenuWindow data, int item, int count)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (item < 0 || item >= data->menu.size)
|
if (item < 0 || item >= data->menui.menu.size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (data->how == PICK_ONE && count != 0) {
|
if (data->how == PICK_ONE && count != 0) {
|
||||||
for (i = 0; i < data->menu.size; i++)
|
for (i = 0; i < data->menui.menu.size; i++)
|
||||||
if (item != i && data->menu.items[i].count != 0) {
|
if (item != i && data->menui.menu.items[i].count != 0) {
|
||||||
data->menu.items[i].count = 0;
|
data->menui.menu.items[i].count = 0;
|
||||||
ListView_RedrawItems(hwndList, i, i);
|
ListView_RedrawItems(hwndList, i, i);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
data->menu.items[item].count = count;
|
data->menui.menu.items[item].count = count;
|
||||||
ListView_RedrawItems(hwndList, item, item);
|
ListView_RedrawItems(hwndList, item, item);
|
||||||
reset_menu_count(hwndList, data);
|
reset_menu_count(hwndList, data);
|
||||||
}
|
}
|
||||||
@@ -1589,7 +1594,7 @@ void
|
|||||||
reset_menu_count(HWND hwndList, PNHMenuWindow data)
|
reset_menu_count(HWND hwndList, PNHMenuWindow data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
data->menu.counting = FALSE;
|
data->menui.menu.counting = FALSE;
|
||||||
if (IsWindow(hwndList)) {
|
if (IsWindow(hwndList)) {
|
||||||
i = ListView_GetNextItem((hwndList), -1, LVNI_FOCUSED);
|
i = ListView_GetNextItem((hwndList), -1, LVNI_FOCUSED);
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ typedef struct mswin_nhmsg_end_menu {
|
|||||||
|
|
||||||
typedef struct mswin_nhmsg_get_text {
|
typedef struct mswin_nhmsg_get_text {
|
||||||
size_t max_size;
|
size_t max_size;
|
||||||
char buffer[];
|
char buffer[TEXT_BUFFER_SIZE];
|
||||||
} MSNHMsgGetText, *PMSNHMsgGetText;
|
} MSNHMsgGetText, *PMSNHMsgGetText;
|
||||||
|
|
||||||
typedef struct mswin_nhmsg_update_status {
|
typedef struct mswin_nhmsg_update_status {
|
||||||
|
|||||||
@@ -664,7 +664,7 @@ onPaint(HWND hWnd)
|
|||||||
/* Find out the cursor (caret) position */
|
/* Find out the cursor (caret) position */
|
||||||
if (i == MSG_LINES - 1) {
|
if (i == MSG_LINES - 1) {
|
||||||
int nnum, numfit;
|
int nnum, numfit;
|
||||||
SIZE size;
|
SIZE size = {0};
|
||||||
TCHAR *nbuf;
|
TCHAR *nbuf;
|
||||||
int nlen;
|
int nlen;
|
||||||
|
|
||||||
|
|||||||
@@ -155,8 +155,8 @@ mswin_display_splash_window(BOOL show_ver)
|
|||||||
/* Show complete version information */
|
/* Show complete version information */
|
||||||
dlb *f;
|
dlb *f;
|
||||||
char verbuf[BUFSZ];
|
char verbuf[BUFSZ];
|
||||||
int verstrsize = 0;
|
/* int verstrsize = 0; */
|
||||||
|
|
||||||
getversionstring(verbuf);
|
getversionstring(verbuf);
|
||||||
strbuf_append(&strbuf, verbuf);
|
strbuf_append(&strbuf, verbuf);
|
||||||
strbuf_append(&strbuf, "\n\n");
|
strbuf_append(&strbuf, "\n\n");
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ onWMPaint(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||||||
|
|
||||||
BOOL useUnicode = fnt->supportsUnicode;
|
BOOL useUnicode = fnt->supportsUnicode;
|
||||||
|
|
||||||
winos_ascii_to_wide_str(str, wbuf, SIZE(wbuf));
|
winos_ascii_to_wide_str((const unsigned char *) str, wbuf, SIZE(wbuf));
|
||||||
|
|
||||||
nFg = (clr == NO_COLOR ? status_fg_color
|
nFg = (clr == NO_COLOR ? status_fg_color
|
||||||
: ((clr >= 0 && clr < CLR_MAX) ? nhcolor_to_RGB(clr)
|
: ((clr >= 0 && clr < CLR_MAX) ? nhcolor_to_RGB(clr)
|
||||||
|
|||||||
@@ -1418,7 +1418,7 @@ mswin_nhgetch(void)
|
|||||||
while ((event = mswin_input_pop()) == NULL || event->type != NHEVENT_CHAR)
|
while ((event = mswin_input_pop()) == NULL || event->type != NHEVENT_CHAR)
|
||||||
mswin_main_loop();
|
mswin_main_loop();
|
||||||
|
|
||||||
key = event->kbd.ch;
|
key = event->ei.kbd.ch;
|
||||||
return (key);
|
return (key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1450,13 +1450,13 @@ mswin_nh_poskey(int *x, int *y, int *mod)
|
|||||||
|
|
||||||
if (event->type == NHEVENT_MOUSE) {
|
if (event->type == NHEVENT_MOUSE) {
|
||||||
if (iflags.wc_mouse_support) {
|
if (iflags.wc_mouse_support) {
|
||||||
*mod = event->ms.mod;
|
*mod = event->ei.ms.mod;
|
||||||
*x = event->ms.x;
|
*x = event->ei.ms.x;
|
||||||
*y = event->ms.y;
|
*y = event->ei.ms.y;
|
||||||
}
|
}
|
||||||
key = 0;
|
key = 0;
|
||||||
} else {
|
} else {
|
||||||
key = event->kbd.ch;
|
key = event->ei.kbd.ch;
|
||||||
}
|
}
|
||||||
return (key);
|
return (key);
|
||||||
}
|
}
|
||||||
@@ -2062,7 +2062,6 @@ mswin_preference_update(const char *pref)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TEXT_BUFFER_SIZE 4096
|
|
||||||
char *
|
char *
|
||||||
mswin_getmsghistory(boolean init)
|
mswin_getmsghistory(boolean init)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
#include "hack.h"
|
#include "hack.h"
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
|
|
||||||
|
#define TEXT_BUFFER_SIZE 4096
|
||||||
|
|
||||||
/* Create an array to keep track of the various windows */
|
/* Create an array to keep track of the various windows */
|
||||||
|
|
||||||
#ifndef MAXWINDOWS
|
#ifndef MAXWINDOWS
|
||||||
|
|||||||
Reference in New Issue
Block a user