From 3acf62f5e70ea58fab6b6ae91f5b8f5c36b428cd Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Wed, 2 Jun 2010 22:22:42 +0200 Subject: [PATCH] winhelp: Added support for hotspot in images with target window embedded. --- programs/winhlp32/hlpfile.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/programs/winhlp32/hlpfile.c b/programs/winhlp32/hlpfile.c index 8c0d3256149..5146c38ec41 100644 --- a/programs/winhlp32/hlpfile.c +++ b/programs/winhlp32/hlpfile.c @@ -815,6 +815,34 @@ static void HLPFILE_AddHotSpotLinks(struct RtfData* rd, HLPFILE* file, file->lpszPath, -1, HLPFILE_Hash(str), 0, 1, -1); break; + + case 0xEE: + case 0xEF: + { + const char* win = strchr(str, '>'); + int wnd = -1; + char* tgt = NULL; + + if (win) + { + for (wnd = file->numWindows - 1; wnd >= 0; wnd--) + { + if (!strcmp(win + 1, file->windows[wnd].name)) break; + } + if (wnd == -1) + WINE_WARN("Couldn't find window info for %s\n", win); + if ((tgt = HeapAlloc(GetProcessHeap(), 0, win - str + 1))) + { + memcpy(tgt, str, win - str); + tgt[win - str] = '\0'; + } + } + hslink = (HLPFILE_HOTSPOTLINK*) + HLPFILE_AllocLink(rd, (start[7 + 15 * i + 0] & 1) ? hlp_link_link : hlp_link_popup, + file->lpszPath, -1, HLPFILE_Hash(tgt ? tgt : str), 0, 1, wnd); + HeapFree(GetProcessHeap(), 0, tgt); + break; + } default: WINE_FIXME("unknown hotsport target 0x%x\n", start[7 + 15 * i + 0]); }