Changeset 116832 in webkit
- Timestamp:
- May 11, 2012 7:01:51 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r116800 r116832 1 2012-05-11 Jeffrey Pfau <jpfau@apple.com> 2 3 REGRESSION (r114170): Scroll areas in nested frames improperly placed when tiled drawing is enabled 4 https://bugs.webkit.org/show_bug.cgi?id=86239 5 6 Reviewed by Anders Carlsson. 7 8 * ManualTests/resources/frame-textarea.html: Added. 9 * ManualTests/scrollable-positioned-frame.html: Added. 10 * ManualTests/scrollable-positioned-nested-frame.html: Added. 11 1 12 2012-05-11 Kevin Ollivier <kevino@theolliviers.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r116831 r116832 1 2012-05-11 Jeffrey Pfau <jpfau@apple.com> 2 3 REGRESSION (r114170): Scroll areas in nested frames improperly placed when tiled drawing is enabled 4 https://bugs.webkit.org/show_bug.cgi?id=86239 5 6 Reviewed by Anders Carlsson. 7 8 Fixes a regression introduced in r114170 by recursively adding positions of parent frames to placement of nested frame scroll areas. 9 10 Manual tests: ManualTests/scrollable-positioned-frame.html 11 ManualTests/scrollable-positioned-nested-frame.html 12 13 * page/scrolling/ScrollingCoordinator.cpp: 14 (WebCore::computeNonFastScrollableRegion): 15 (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): 16 1 17 2012-05-11 Beth Dakin <bdakin@apple.com> 2 18 -
trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp
r116720 r116832 106 106 } 107 107 108 static Region computeNonFastScrollableRegion(Frame* mainFrame)108 static Region computeNonFastScrollableRegion(Frame* frame, const IntPoint& frameLocation) 109 109 { 110 110 Region nonFastScrollableRegion; 111 112 for (Frame* frame = mainFrame; frame; frame = frame->tree()->traverseNext()) { 113 FrameView* frameView = frame->view(); 114 if (!frameView) 115 continue; 116 117 if (const FrameView::ScrollableAreaSet* scrollableAreas = frameView->scrollableAreas()) { 118 for (FrameView::ScrollableAreaSet::const_iterator it = scrollableAreas->begin(), end = scrollableAreas->end(); it != end; ++it) { 119 ScrollableArea* scrollableArea = *it; 120 nonFastScrollableRegion.unite(scrollableArea->scrollableAreaBoundingBox()); 121 } 122 } 123 124 if (const HashSet<RefPtr<Widget> >* children = frameView->children()) { 125 for (HashSet<RefPtr<Widget> >::const_iterator it = children->begin(), end = children->end(); it != end; ++it) { 126 if (!(*it)->isPluginViewBase()) 127 continue; 128 129 PluginViewBase* pluginViewBase = static_cast<PluginViewBase*>((*it).get()); 130 if (pluginViewBase->wantsWheelEvents()) 131 nonFastScrollableRegion.unite(pluginViewBase->frameRect()); 132 } 111 FrameView* frameView = frame->view(); 112 if (!frameView) 113 return nonFastScrollableRegion; 114 115 IntPoint offset = frameLocation; 116 offset.moveBy(frameView->frameRect().location()); 117 118 if (const FrameView::ScrollableAreaSet* scrollableAreas = frameView->scrollableAreas()) { 119 for (FrameView::ScrollableAreaSet::const_iterator it = scrollableAreas->begin(), end = scrollableAreas->end(); it != end; ++it) { 120 ScrollableArea* scrollableArea = *it; 121 IntRect box = scrollableArea->scrollableAreaBoundingBox(); 122 box.moveBy(offset); 123 nonFastScrollableRegion.unite(box); 133 124 } 134 125 } 126 127 if (const HashSet<RefPtr<Widget> >* children = frameView->children()) { 128 for (HashSet<RefPtr<Widget> >::const_iterator it = children->begin(), end = children->end(); it != end; ++it) { 129 if (!(*it)->isPluginViewBase()) 130 continue; 131 132 PluginViewBase* pluginViewBase = static_cast<PluginViewBase*>((*it).get()); 133 if (pluginViewBase->wantsWheelEvents()) 134 nonFastScrollableRegion.unite(pluginViewBase->frameRect()); 135 } 136 } 137 138 FrameTree* tree = frame->tree(); 139 for (Frame* subFrame = tree->firstChild(); subFrame; subFrame = subFrame->tree()->nextSibling()) 140 nonFastScrollableRegion.unite(computeNonFastScrollableRegion(subFrame, offset)); 135 141 136 142 return nonFastScrollableRegion; … … 145 151 // all scrollable areas, such as subframes, overflow divs and list boxes. We need to do this even if the 146 152 // frame view whose layout was updated is not the main frame. 147 Region nonFastScrollableRegion = computeNonFastScrollableRegion(m_page->mainFrame() );153 Region nonFastScrollableRegion = computeNonFastScrollableRegion(m_page->mainFrame(), IntPoint()); 148 154 setNonFastScrollableRegion(nonFastScrollableRegion); 149 155
Note: See TracChangeset
for help on using the changeset viewer.