void ChmEngineImpl::DisplayPage(const WCHAR *pageUrl) { if (IsExternalUrl(pageUrl)) { // open external links in an external browser // (same as for PDF, XPS, etc. documents) if (navCb) navCb->LaunchBrowser(pageUrl); return; } int pageNo = pages.Find(ScopedMem<WCHAR>(str::ToPlainUrl(pageUrl))) + 1; if (pageNo) currentPageNo = pageNo; // This is a hack that seems to be needed for some chm files where // url starts with "..\" even though it's not accepted by ie as // a correct its: url. There's a possibility it breaks some other // chm files (I don't know such cases, though). // A more robust solution would try to match with the actual // names of files inside chm package. if (str::StartsWith(pageUrl, L"..\\")) pageUrl += 3; if (str::StartsWith(pageUrl, L"/")) pageUrl++; assert(htmlWindow); if (htmlWindow) htmlWindow->NavigateToDataUrl(pageUrl); }
void CreateThumbnail(HtmlWindow *hw) { this->hw = hw; homeUrl.Set(str::conv::FromAnsi(doc->GetHomePath())); if (*homeUrl == '/') homeUrl.Set(str::Dup(homeUrl + 1)); hw->NavigateToDataUrl(homeUrl); }