hhctrl.ocx: Add Search capability.
diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c
index 7eca538..680911a 100644
--- a/dlls/hhctrl.ocx/help.c
+++ b/dlls/hhctrl.ocx/help.c
@@ -421,6 +421,7 @@
{
LPCWSTR chmfile = NULL, name = NULL, local = NULL;
ContentItem *citer;
+ SearchItem *siter;
IndexItem *iiter;
if(!user_data || !info)
@@ -472,6 +473,12 @@
local = iiter->items[0].local;
chmfile = iiter->merge.chm_file;
break;
+ case TAB_SEARCH:
+ siter = (SearchItem *) user_data;
+ name = siter->filename;
+ local = siter->filename;
+ chmfile = info->pCHMInfo->szFile;
+ break;
default:
FIXME("Unhandled operation for this tab!\n");
return 0;
@@ -523,8 +530,16 @@
case TVN_SELCHANGEDW:
return OnTopicChange(info, (void*)((NMTREEVIEWW *)lParam)->itemNew.lParam);
case NM_DBLCLK:
- if(info && info->current_tab == TAB_INDEX)
+ if(!info)
+ return 0;
+ switch(info->current_tab)
+ {
+ case TAB_INDEX:
return OnTopicChange(info, (void*)((NMITEMACTIVATE *)lParam)->lParam);
+ case TAB_SEARCH:
+ return OnTopicChange(info, (void*)((NMITEMACTIVATE *)lParam)->lParam);
+ }
+ break;
case NM_RETURN:
if(!info)
return 0;
@@ -540,11 +555,34 @@
return 0;
}
case TAB_SEARCH: {
- WCHAR needle[100];
+ if(nmhdr->hwndFrom == info->search.hwndEdit) {
+ char needle[100];
+ DWORD i, len;
- GetWindowTextW(info->search.hwndEdit, needle, sizeof(needle)/sizeof(WCHAR));
- FIXME("Search for text: %s\n", debugstr_w(needle));
- return 0;
+ len = GetWindowTextA(info->search.hwndEdit, needle, sizeof(needle));
+ if(!len)
+ {
+ FIXME("Unable to get search text.\n");
+ return 0;
+ }
+ /* Convert the requested text for comparison later against the
+ * lower case version of HTML file contents.
+ */
+ for(i=0;i<len;i++)
+ needle[i] = tolower(needle[i]);
+ InitSearch(info, needle);
+ return 0;
+ }else if(nmhdr->hwndFrom == info->search.hwndList) {
+ HWND hwndList = info->search.hwndList;
+ 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;
}
}
break;
@@ -1376,6 +1414,7 @@
ReleaseWebBrowser(info);
ReleaseContent(info);
ReleaseIndex(info);
+ ReleaseSearch(info);
if(info->WinType.hwndHelp)
DestroyWindow(info->WinType.hwndHelp);