thx for the various traces: - basically user32.WinHelp is called with filename=H3MAPED.HLP and command = popup-context - which starts 'winhlp32.exe -x' (-x: invisible) - then sends the command to winhlp32.exe which opens the popup (hence without a page being displayed) it seems to me that it would be better to have something like (giving priority to displayed hlpfile popup color): ``` diff --git a/programs/winhlp32/winhelp.c b/programs/winhlp32/winhelp.c index 1c112f08aaf..fde3837dcf6 100644 --- a/programs/winhlp32/winhelp.c +++ b/programs/winhlp32/winhelp.c @@ -293,8 +293,8 @@ HLPFILE_WINDOWINFO* WINHELP_GetWindowInfo(HLPFILE* hlpfile, LPCSTR name) * * */ -static HLPFILE_WINDOWINFO* WINHELP_GetPopupWindowInfo(HLPFILE* hlpfile, - WINHELP_WINDOW* parent, LPARAM mouse) +HLPFILE_WINDOWINFO* WINHELP_GetPopupWindowInfo(HLPFILE* hlpfile, + WINHELP_WINDOW* parent, LPARAM mouse) { static HLPFILE_WINDOWINFO wi; @@ -316,7 +316,9 @@ static HLPFILE_WINDOWINFO* WINHELP_GetPopupWindowInfo(HLPFILE* hlpfile, wi.style = SW_SHOW; wi.win_style = WS_POPUP | WS_BORDER; - if (parent->page->file->has_popup_color) + if (hlpfile->has_popup_color) + wi.sr_color = hlpfile->popup_color; + else if (parent->page && parent->page->file->has_popup_color) wi.sr_color = parent->page->file->popup_color; else wi.sr_color = parent->info->sr_color; ``` (side note: there's still a couple of other places in winhlp32 code that assumes that there's always a page) now looking into richedit -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11400#note_146055