hhctrl.ocx: Allow ListView navigation with the Return/Enter key.
diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c
index e8121e7..e115da1 100644
--- a/dlls/hhctrl.ocx/help.c
+++ b/dlls/hhctrl.ocx/help.c
@@ -487,8 +487,20 @@
case TVN_SELCHANGEDW:
return OnTopicChange(info, (void*)((NMTREEVIEWW *)lParam)->itemNew.lParam);
case NM_DBLCLK:
- if(info->current_tab == TAB_INDEX)
+ if(info && info->current_tab == TAB_INDEX)
return OnTopicChange(info, (void*)((NMITEMACTIVATE *)lParam)->lParam);
+ case NM_RETURN:
+ if(info && info->current_tab == TAB_INDEX)
+ {
+ HWND hwndList = info->tabs[TAB_INDEX].hwnd;
+ LVITEMW lvItem;
+
+ lvItem.iItem = (int) SendMessageW(hwndList, LVM_GETSELECTIONMARK, 0, 0);
+ lvItem.mask = TVIF_PARAM;
+ ListView_GetItemW(hwndList, &lvItem);
+ OnTopicChange(info, (void*) lvItem.lParam);
+ }
+ return 0;
}
break;
}
@@ -910,7 +922,9 @@
{
case WM_NOTIFY: {
NMHDR *nmhdr = (NMHDR*)lParam;
- if(nmhdr->code == NM_DBLCLK) {
+ switch(nmhdr->code)
+ {
+ case NM_DBLCLK: {
HHInfo *info = (HHInfo*)GetWindowLongPtrW(hWnd, GWLP_USERDATA);
IndexSubItem *iter;
@@ -923,6 +937,23 @@
ShowWindow(info->popup.hwndPopup, SW_HIDE);
return 0;
}
+ case NM_RETURN: {
+ HHInfo *info = (HHInfo*)GetWindowLongPtrW(hWnd, GWLP_USERDATA);
+ IndexSubItem *iter;
+ LVITEMW lvItem;
+
+ if(info == 0)
+ return 0;
+
+ lvItem.iItem = (int) SendMessageW(info->popup.hwndList, LVM_GETSELECTIONMARK, 0, 0);
+ lvItem.mask = TVIF_PARAM;
+ ListView_GetItemW(info->popup.hwndList, &lvItem);
+ iter = (IndexSubItem*) lvItem.lParam;
+ NavigateToChm(info, info->index->merge.chm_file, iter->local);
+ ShowWindow(info->popup.hwndPopup, SW_HIDE);
+ return 0;
+ }
+ }
break;
}
default: