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: