void ToggleFavorites(WindowInfo* win) { if (gGlobalPrefs->showFavorites) { SetSidebarVisibility(win, win->tocVisible, false); } else { SetSidebarVisibility(win, win->tocVisible, true); SetFocus(win->hwndFavTree); } }
void ToggleTocBox(WindowInfo *win) { if (!win->IsDocLoaded()) return; if (win->tocVisible) { SetSidebarVisibility(win, false, gGlobalPrefs->showFavorites); } else { SetSidebarVisibility(win, true, gGlobalPrefs->showFavorites); if (win->tocVisible) SetFocus(win->hwndTocTree); } }
void UpdateFavoritesTree(WindowInfo* win) { HWND hwndTree = win->hwndFavTree; if (TreeView_GetCount(hwndTree) > 0) { // PopulateFavTreeIfNeeded will re-enable WM_SETREDRAW SendMessage(hwndTree, WM_SETREDRAW, FALSE, 0); TreeView_DeleteAllItems(hwndTree); PopulateFavTreeIfNeeded(win); } // hide the favorites tree if we've removed the last favorite if (0 == TreeView_GetCount(hwndTree)) { SetSidebarVisibility(win, win->tocVisible, false); } }
bool StressTest::OpenFile(const TCHAR *fileName) { bool reuse = rand() % 3 != 1; _tprintf(_T("%s\n"), fileName); fflush(stdout); LoadArgs args(fileName, NULL, true /* show */, reuse); WindowInfo *w = LoadDocument(args); if (!w) return false; if (w == win) { // WindowInfo reused if (!win->dm) return false; } else if (!w->dm) { // new WindowInfo CloseWindow(w, false, true); return false; } // transfer ownership of stressTest object to a new window and close the // current one assert(this == win->stressTest); if (w != win) { if (win->IsDocLoaded()) { // try to provoke a crash in RenderCache cleanup code ClientRect rect(win->hwndFrame); rect.Inflate(rand() % 10, rand() % 10); SendMessage(win->hwndFrame, WM_SIZE, 0, MAKELONG(rect.dx, rect.dy)); win->RenderPage(1); win->RepaintAsync(); } WindowInfo *toClose = win; w->stressTest = win->stressTest; win->stressTest = NULL; win = w; CloseWindow(toClose, false, false); } if (!win->dm) return false; win->dm->ChangeDisplayMode(DM_CONTINUOUS); win->dm->ZoomTo(ZOOM_FIT_PAGE); win->dm->GoToFirstPage(); if (win->tocVisible || gGlobalPrefs.favVisible) SetSidebarVisibility(win, win->tocVisible, gGlobalPrefs.favVisible); currPage = pageRanges.At(0).start; win->dm->GoToPage(currPage, 0); currPageRenderTime.Start(); ++filesCount; pageForSearchStart = (rand() % win->dm->PageCount()) + 1; // search immediately in single page documents if (1 == pageForSearchStart) { // use text that is unlikely to be found, so that we search all pages win::SetText(win->hwndFindBox, _T("!z_yt")); FindTextOnThread(win); } int secs = SecsSinceSystemTime(stressStartTime); ScopedMem<TCHAR> tm(FormatTime(secs)); ScopedMem<TCHAR> s(str::Format(_T("File %d: %s, time: %s"), filesCount, fileName, tm)); ShowNotification(win, s, false, false, NG_STRESS_TEST_SUMMARY); return true; }
bool StressTest::OpenFile(const WCHAR* fileName) { wprintf(L"%s\n", fileName); fflush(stdout); LoadArgs args(fileName); args.forceReuse = rand() % 3 != 1; WindowInfo* w = LoadDocument(args); if (!w) return false; if (w == win) { // WindowInfo reused if (!win->IsDocLoaded()) return false; } else if (!w->IsDocLoaded()) { // new WindowInfo CloseWindow(w, false); return false; } // transfer ownership of stressTest object to a new window and close the // current one AssertCrash(this == win->stressTest); if (w != win) { if (win->IsDocLoaded()) { // try to provoke a crash in RenderCache cleanup code ClientRect rect(win->hwndFrame); rect.Inflate(rand() % 10, rand() % 10); SendMessage(win->hwndFrame, WM_SIZE, 0, MAKELONG(rect.dx, rect.dy)); if (win->AsFixed()) win->cbHandler->RequestRendering(1); win->RepaintAsync(); } WindowInfo* toClose = win; w->stressTest = win->stressTest; win->stressTest = nullptr; win = w; CloseWindow(toClose, false); } if (!win->IsDocLoaded()) return false; win->ctrl->SetDisplayMode(DM_CONTINUOUS); win->ctrl->SetZoomVirtual(ZOOM_FIT_PAGE, nullptr); win->ctrl->GoToFirstPage(); if (win->tocVisible || gGlobalPrefs->showFavorites) SetSidebarVisibility(win, win->tocVisible, gGlobalPrefs->showFavorites); currPage = pageRanges.at(0).start; win->ctrl->GoToPage(currPage, false); currPageRenderTime.Start(); ++filesCount; pageForSearchStart = (rand() % win->ctrl->PageCount()) + 1; // search immediately in single page documents if (1 == pageForSearchStart) { // use text that is unlikely to be found, so that we search all pages win::SetText(win->hwndFindBox, L"!z_yt"); FindTextOnThread(win, TextSearchDirection::Forward, true); } int secs = SecsSinceSystemTime(stressStartTime); AutoFreeW tm(FormatTime(secs)); AutoFreeW s(str::Format(L"File %d: %s, time: %s", filesCount, fileName, tm)); win->ShowNotification(s, NOS_PERSIST, NG_STRESS_TEST_SUMMARY); return true; }