Fix for <rdar://problem/8944558> Overlay scrollers in overflow areas need to
send notifications appropriate times (showing up, resizing) -and corresponding- https://bugs.webkit.org/show_bug.cgi?id=56067 Reviewed by Darin Adler. The general strategy here is to add a HashSet of ScrollableAreas to the page that can be accessed when necessary to send notifications to all ScrollableAreas. In turn, all of the ScrollableArea classes that add themselves to the HashSet must keep a weak pointer to Page so that they can remove themselves without relying on Frames or Renderers to still have references. Find layers for relevant node and if the layers are in the Page's ScrollableArea set, then send the relevant notification. * page/EventHandler.cpp: (WebCore::layerForNode): (WebCore::EventHandler::mouseMoved): (WebCore::EventHandler::updateMouseEventTargetNode): When the page is set active or not active, iterate through the Page's ScrollableAreas to send hide/show notifications. * page/FocusController.cpp: (WebCore::FocusController::setActive): When a FrameView is created, add it to the ScrollableArea set. When it's destroyed, remove it. * page/FrameView.cpp: (WebCore::FrameView::FrameView): (WebCore::FrameView::~FrameView): Iterate through the Page's ScrollableAreas to send the paint notification. (WebCore::FrameView::notifyPageThatContentAreaWillPaint): * page/FrameView.h: (WebCore::FrameView::disconnectFromPage): Add the new ScrollableArea set. * page/Page.cpp: (WebCore::Page::~Page): (WebCore::Page::addScrollableArea): git-svn-id: svn://svn.chromium.org/blink/trunk@81209 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Showing
Please register or sign in to comment