(from <Someone>)
This implements some items on the ToDo list:
- H0005: Space does the same as PgDn in text, menu and 'menutext'
windows if NetHack mode is on.
- M0004: The cursor (caret) is hidden in text windows and menu
windows.
PgUp/PgDn/Up/Dn don't move the cursor, but scroll the
window.
This commit is contained in:
+59
-21
@@ -306,6 +306,14 @@ BOOL CALLBACK MenuWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
data->done = 1;
|
data->done = 1;
|
||||||
data->result = 0;
|
data->result = 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
case IDC_MENU_TEXT:
|
||||||
|
switch (HIWORD(wParam))
|
||||||
|
{
|
||||||
|
case EN_SETFOCUS:
|
||||||
|
HideCaret((HWND)lParam);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@@ -1012,23 +1020,33 @@ BOOL onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
|||||||
return -2;
|
return -2;
|
||||||
|
|
||||||
case ' ':
|
case ' ':
|
||||||
/* ends menu for PICK_ONE/PICK_NONE
|
if (GetNHApp()->regNetHackMode) {
|
||||||
select item for PICK_ANY */
|
/* NetHack mode: Scroll down one page */
|
||||||
if( data->how==PICK_ONE || data->how==PICK_NONE ) {
|
topIndex = ListView_GetTopIndex( hwndList );
|
||||||
data->done = 1;
|
pageSize = ListView_GetCountPerPage( hwndList );
|
||||||
data->result = 0;
|
i = min(topIndex+pageSize, data->menu.size-1);
|
||||||
return -2;
|
ListView_SetItemState(hwndList, i, LVIS_FOCUSED, LVIS_FOCUSED);
|
||||||
} else if( data->how==PICK_ANY ) {
|
ListView_EnsureVisible(hwndList, i, FALSE);
|
||||||
i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
return -2;
|
||||||
if( i>=0 ) {
|
} else {
|
||||||
SelectMenuItem(
|
/* Windows mode: ends menu for PICK_ONE/PICK_NONE
|
||||||
hwndList,
|
select item for PICK_ANY */
|
||||||
data,
|
if( data->how==PICK_ONE || data->how==PICK_NONE ) {
|
||||||
i,
|
data->done = 1;
|
||||||
NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1
|
data->result = 0;
|
||||||
);
|
return -2;
|
||||||
}
|
} else if( data->how==PICK_ANY ) {
|
||||||
}
|
i = ListView_GetNextItem(hwndList, -1, LVNI_FOCUSED);
|
||||||
|
if( i>=0 ) {
|
||||||
|
SelectMenuItem(
|
||||||
|
hwndList,
|
||||||
|
data,
|
||||||
|
i,
|
||||||
|
NHMENU_IS_SELECTED(data->menu.items[i])? 0 : -1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1270,15 +1288,35 @@ LRESULT CALLBACK NHMenuListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------*/
|
||||||
/* Text control window proc - implements close on space */
|
/* Text control window proc - implements scrolling without a cursor */
|
||||||
LRESULT CALLBACK NHMenuTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
LRESULT CALLBACK NHMenuTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch(message) {
|
switch(message) {
|
||||||
|
|
||||||
/* close on space */
|
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
if( wParam==VK_SPACE ) {
|
switch (wParam)
|
||||||
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
{
|
||||||
|
/* close on space in Windows mode
|
||||||
|
page down on space in NetHack mode */
|
||||||
|
case VK_SPACE:
|
||||||
|
if (GetNHApp()->regNetHackMode)
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
|
||||||
|
else
|
||||||
|
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
||||||
|
return 0;
|
||||||
|
case VK_NEXT:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_PRIOR:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEUP, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_UP:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_LINEUP, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_DOWN:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_LINEDOWN, 0);
|
||||||
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
+30
-4
@@ -125,6 +125,13 @@ BOOL CALLBACK NHTextWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
|||||||
DestroyWindow(hWnd);
|
DestroyWindow(hWnd);
|
||||||
SetFocus(GetNHApp()->hMainWnd);
|
SetFocus(GetNHApp()->hMainWnd);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
case IDC_TEXT_CONTROL:
|
||||||
|
switch (HIWORD(wParam))
|
||||||
|
{
|
||||||
|
case EN_SETFOCUS:
|
||||||
|
HideCaret((HWND)lParam);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -203,13 +210,32 @@ LRESULT CALLBACK NHEditHookWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
|
|||||||
{
|
{
|
||||||
switch(message) {
|
switch(message) {
|
||||||
|
|
||||||
/* close on space */
|
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
if( wParam==VK_SPACE ) {
|
switch (wParam)
|
||||||
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
{
|
||||||
|
/* close on space in Windows mode
|
||||||
|
page down on space in NetHack mode */
|
||||||
|
case VK_SPACE:
|
||||||
|
if (GetNHApp()->regNetHackMode)
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
|
||||||
|
else
|
||||||
|
PostMessage(GetParent(hWnd), WM_COMMAND, MAKELONG(IDOK, 0), 0);
|
||||||
|
return 0;
|
||||||
|
case VK_NEXT:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_PRIOR:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_PAGEUP, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_UP:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_LINEUP, 0);
|
||||||
|
return 0;
|
||||||
|
case VK_DOWN:
|
||||||
|
SendMessage(hWnd, EM_SCROLL, SB_LINEDOWN, 0);
|
||||||
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( editControlWndProc )
|
if( editControlWndProc )
|
||||||
|
|||||||
Reference in New Issue
Block a user