void FocusController::setContainingWindowIsVisible(bool containingWindowIsVisible) { if (m_containingWindowIsVisible == containingWindowIsVisible) return; m_containingWindowIsVisible = containingWindowIsVisible; FrameView* view = m_page->mainFrame()->view(); if (!view) return; contentAreaDidShowOrHide(view, containingWindowIsVisible); for (Frame* frame = m_page->mainFrame(); frame; frame = frame->tree()->traverseNext()) { FrameView* frameView = frame->view(); if (!frameView) continue; const HashSet<ScrollableArea*>* scrollableAreas = frameView->scrollableAreas(); if (!scrollableAreas) continue; for (HashSet<ScrollableArea*>::const_iterator it = scrollableAreas->begin(), end = scrollableAreas->end(); it != end; ++it) { ScrollableArea* scrollableArea = *it; ASSERT(scrollableArea->scrollbarsCanBeActive() || m_page->shouldSuppressScrollbarAnimations()); contentAreaDidShowOrHide(scrollableArea, containingWindowIsVisible); } } }
void Page::setShouldSuppressScrollbarAnimations(bool suppressAnimations) { if (suppressAnimations == m_suppressScrollbarAnimations) return; if (!suppressAnimations) { // If animations are not going to be suppressed anymore, then there is nothing to do here but // change the cached value. m_suppressScrollbarAnimations = suppressAnimations; return; } // On the other hand, if we are going to start suppressing animations, then we need to make sure we // finish any current scroll animations first. FrameView* view = mainFrame()->view(); if (!view) return; view->finishCurrentScrollAnimations(); for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext()) { FrameView* frameView = frame->view(); if (!frameView) continue; const HashSet<ScrollableArea*>* scrollableAreas = frameView->scrollableAreas(); if (!scrollableAreas) continue; for (HashSet<ScrollableArea*>::const_iterator it = scrollableAreas->begin(), end = scrollableAreas->end(); it != end; ++it) { ScrollableArea* scrollableArea = *it; ASSERT(scrollableArea->scrollbarsCanBeActive()); scrollableArea->finishCurrentScrollAnimations(); } } m_suppressScrollbarAnimations = suppressAnimations; }