Changeset 93556 in webkit
- Timestamp:
- Aug 22, 2011 4:15:05 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 6 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r93554 r93556 1 2011-08-22 Peter Kasting <pkasting@google.com> 2 3 Unreviewed, rolling out r93538. 4 http://trac.webkit.org/changeset/93538 5 https://bugs.webkit.org/show_bug.cgi?id=66143 6 7 Broke Leopard, SnowLeopard, and Chromium Mac bots 8 9 * fast/regions/webkit-flow-floats-inside-regions-bounds-expected.txt: Removed. 10 * fast/regions/webkit-flow-floats-inside-regions-bounds.html: Removed. 11 * fast/regions/webkit-flow-inlines-inside-regions-bounds-expected.txt: Removed. 12 * fast/regions/webkit-flow-inlines-inside-regions-bounds-vertical-lr-expected.txt: Removed. 13 * fast/regions/webkit-flow-inlines-inside-regions-bounds-vertical-lr.html: Removed. 14 * fast/regions/webkit-flow-inlines-inside-regions-bounds.html: Removed. 15 1 16 2011-08-22 Tony Chang <tony@chromium.org> 2 17 -
trunk/Source/WebCore/ChangeLog
r93551 r93556 1 2011-08-22 Peter Kasting <pkasting@google.com> 2 3 Unreviewed, rolling out r93538. 4 http://trac.webkit.org/changeset/93538 5 https://bugs.webkit.org/show_bug.cgi?id=66143 6 7 Broke Leopard, SnowLeopard, and Chromium Mac bots 8 9 * rendering/LayoutState.cpp: 10 (WebCore::LayoutState::LayoutState): 11 * rendering/RenderBlock.cpp: 12 (WebCore::RenderBlock::layoutBlock): 13 (WebCore::RenderBlock::logicalRightOffsetForLine): 14 * rendering/RenderBlock.h: 15 * rendering/RenderFlowThread.cpp: 16 (WebCore::RenderFlowThread::RenderFlowThread): 17 (WebCore::RenderFlowThread::layout): 18 (WebCore::RenderFlowThread::repaintRectangleInRegions): 19 * rendering/RenderFlowThread.h: 20 * rendering/RenderRegion.cpp: 21 * rendering/RenderRegion.h: 22 * rendering/RenderView.cpp: 23 (WebCore::RenderView::RenderView): 24 * rendering/RenderView.h: 25 (WebCore::RenderView::pushLayoutState): 26 1 27 2011-08-22 Tony Chang <tony@chromium.org> 2 28 -
trunk/Source/WebCore/rendering/LayoutState.cpp
r93538 r93556 83 83 // If we establish a new page height, then cache the offset to the top of the first page. 84 84 // We can compare this later on to figure out what part of the page we're actually on, 85 if (pageLogicalHeight || m_columnInfo || renderer->isRenderFlowThread()) {85 if (pageLogicalHeight || m_columnInfo) { 86 86 m_pageLogicalHeight = pageLogicalHeight; 87 87 m_pageOffset = LayoutSize(m_layoutOffset.width() + renderer->borderLeft() + renderer->paddingLeft(), -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r93538 r93556 42 42 #include "RenderCombineText.h" 43 43 #include "RenderDeprecatedFlexibleBox.h" 44 #include "RenderFlowThread.h"45 44 #include "RenderImage.h" 46 45 #include "RenderInline.h" … … 1224 1223 } 1225 1224 1226 RenderView* renderView = view(); 1227 LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasColumns() || hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged, colInfo); 1228 1229 bool disableRegionFitting = renderView->hasRenderFlowThread() && (hasColumns() || (isPositioned() && !isRenderFlowThread()) || isFloating()); 1230 RegionFittingDisabler regionFittingDisabler(renderView->currentRenderFlowThread(), disableRegionFitting); 1225 LayoutStateMaintainer statePusher(view(), this, locationOffset(), hasColumns() || hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged, colInfo); 1231 1226 1232 1227 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, to track … … 1311 1306 statePusher.pop(); 1312 1307 1313 if ( renderView->layoutState()->m_pageLogicalHeight)1314 setPageLogicalOffset( renderView->layoutState()->pageLogicalOffset(logicalTop()));1308 if (view()->layoutState()->m_pageLogicalHeight) 1309 setPageLogicalOffset(view()->layoutState()->pageLogicalOffset(logicalTop())); 1315 1310 1316 1311 updateLayerTransform(); … … 3562 3557 } 3563 3558 3564 void RenderBlock::adjustForRegionFittingIfNeeded(LayoutUnit logicalTop, LayoutUnit& rightOffset) const3565 {3566 RenderView* renderView = view();3567 if (!renderView->hasRenderFlowThread())3568 return;3569 3570 RenderFlowThread* flowThread = renderView->currentRenderFlowThread();3571 if (!flowThread->isRegionFittingEnabled())3572 return;3573 3574 LayoutState* layoutState = renderView->layoutState();3575 IntSize delta = layoutState->m_layoutOffset - layoutState->m_pageOffset;3576 int offset = isHorizontalWritingMode() ? delta.height() : delta.width();3577 LayoutUnit regionWidth = flowThread->regionLogicalWidthForLine(offset + logicalTop);3578 rightOffset -= flowThread->logicalWidth() - regionWidth;3579 }3580 3581 3559 LayoutUnit RenderBlock::logicalRightOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedOffset, bool applyTextIndent, LayoutUnit* heightRemaining) const 3582 3560 { 3583 3561 LayoutUnit right = fixedOffset; 3584 adjustForRegionFittingIfNeeded(logicalTop, right);3585 3562 3586 3563 if (m_floatingObjects && m_floatingObjects->hasRightObjects()) { … … 3588 3565 *heightRemaining = 1; 3589 3566 3590 LayoutUnit rightFloatOffset = fixedOffset; 3591 FloatIntervalSearchAdapter<FloatingObject::FloatRight> adapter(this, logicalTop, rightFloatOffset, heightRemaining); 3567 FloatIntervalSearchAdapter<FloatingObject::FloatRight> adapter(this, logicalTop, right, heightRemaining); 3592 3568 m_floatingObjects->placedFloatsTree().allOverlapsWithAdapter(adapter); 3593 right = min(right, rightFloatOffset);3594 3569 } 3595 3570 -
trunk/Source/WebCore/rendering/RenderBlock.h
r93538 r93556 312 312 virtual void paintObject(PaintInfo&, const LayoutPoint&); 313 313 314 void adjustForRegionFittingIfNeeded(LayoutUnit logicalTop, LayoutUnit& rightOffset) const;315 316 314 LayoutUnit logicalRightOffsetForLine(LayoutUnit position, LayoutUnit fixedOffset, bool applyTextIndent = true, LayoutUnit* logicalHeightRemaining = 0) const; 317 315 LayoutUnit logicalLeftOffsetForLine(LayoutUnit position, LayoutUnit fixedOffset, bool applyTextIndent = true, LayoutUnit* logicalHeightRemaining = 0) const; -
trunk/Source/WebCore/rendering/RenderFlowThread.cpp
r93538 r93556 46 46 , m_flowThread(flowThread) 47 47 , m_regionsInvalidated(false) 48 , m_regionFittingDisableCount(0)49 48 { 50 49 setIsAnonymous(false); … … 272 271 } 273 272 274 class CurrentRenderFlowThreadMaintainer {275 WTF_MAKE_NONCOPYABLE(CurrentRenderFlowThreadMaintainer);276 public:277 CurrentRenderFlowThreadMaintainer(RenderFlowThread* renderFlowThread)278 : m_renderFlowThread(renderFlowThread)279 {280 RenderView* view = m_renderFlowThread->view();281 ASSERT(!view->currentRenderFlowThread());282 view->setCurrentRenderFlowThread(m_renderFlowThread);283 }284 ~CurrentRenderFlowThreadMaintainer()285 {286 RenderView* view = m_renderFlowThread->view();287 ASSERT(view->currentRenderFlowThread() == m_renderFlowThread);288 view->setCurrentRenderFlowThread(0);289 }290 private:291 RenderFlowThread* m_renderFlowThread;292 };293 294 273 void RenderFlowThread::layout() 295 274 { 296 CurrentRenderFlowThreadMaintainer currentFlowThreadSetter(this);297 298 275 if (m_regionsInvalidated) { 299 276 m_regionsInvalidated = false; … … 460 437 } 461 438 462 RenderRegion* RenderFlowThread::renderRegionForLine(LayoutUnit position) const463 {464 ASSERT(!m_regionsInvalidated);465 466 // FIXME: The regions are always in order, optimize this search.467 bool useHorizontalWritingMode = isHorizontalWritingMode();468 for (RenderRegionList::const_iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) {469 RenderRegion* region = *iter;470 if (!region->isValid())471 continue;472 473 LayoutRect regionRect = region->regionRect();474 475 if (useHorizontalWritingMode) {476 if (regionRect.y() <= position && position < regionRect.maxY())477 return region;478 continue;479 }480 481 if (regionRect.x() <= position && position < regionRect.maxX())482 return region;483 }484 485 return 0;486 }487 488 LayoutUnit RenderFlowThread::regionLogicalWidthForLine(LayoutUnit position) const489 {490 RenderRegion* region = renderRegionForLine(position);491 if (!region)492 return 0;493 494 return isHorizontalWritingMode() ? region->regionRect().width() : region->regionRect().height();495 }496 497 498 439 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderFlowThread.h
r93538 r93556 97 97 void repaintRectangleInRegions(const LayoutRect&, bool immediate); 98 98 99 LayoutUnit regionLogicalWidthForLine(LayoutUnit position) const;100 101 bool isRegionFittingEnabled() const { return !m_regionFittingDisableCount; }102 void disableRegionFitting() { m_regionFittingDisableCount++; }103 void enableRegionFitting() { ASSERT(m_regionFittingDisableCount > 0); m_regionFittingDisableCount--; }104 105 99 private: 106 100 virtual const char* renderName() const { return "RenderFlowThread"; } 107 108 RenderRegion* renderRegionForLine(LayoutUnit position) const;109 101 110 102 bool dependsOn(RenderFlowThread* otherRenderFlowThread) const; … … 132 124 133 125 bool m_regionsInvalidated; 134 unsigned m_regionFittingDisableCount;135 126 }; 136 127 … … 150 141 void toRenderFlowThread(const RenderFlowThread*); 151 142 152 class RegionFittingDisabler {153 WTF_MAKE_NONCOPYABLE(RegionFittingDisabler);154 public:155 RegionFittingDisabler(RenderFlowThread* flowThread, bool disable)156 {157 if (flowThread && disable) {158 m_flowThread = flowThread;159 m_flowThread->disableRegionFitting();160 } else161 m_flowThread = 0;162 }163 164 ~RegionFittingDisabler()165 {166 if (m_flowThread)167 m_flowThread->enableRegionFitting();168 }169 private:170 RenderFlowThread* m_flowThread;171 };172 173 174 143 } // namespace WebCore 175 144 -
trunk/Source/WebCore/rendering/RenderRegion.cpp
r93538 r93556 83 83 } 84 84 85 void RenderRegion::layout()86 {87 RenderReplaced::layout();88 if (m_flowThread && isValid())89 m_flowThread->invalidateRegions();90 }91 92 85 void RenderRegion::attachRegion() 93 86 { -
trunk/Source/WebCore/rendering/RenderRegion.h
r93538 r93556 59 59 void setIsValid(bool valid) { m_isValid = valid; } 60 60 61 virtual void layout();62 63 61 private: 64 62 virtual const char* renderName() const { return "RenderRegion"; } -
trunk/Source/WebCore/rendering/RenderView.cpp
r93538 r93556 56 56 , m_layoutState(0) 57 57 , m_layoutStateDisableCount(0) 58 , m_currentRenderFlowThread(0)59 58 { 60 59 // Clear our anonymous bit, set because RenderObject assumes -
trunk/Source/WebCore/rendering/RenderView.h
r93538 r93556 182 182 const RenderFlowThreadList* renderFlowThreadList() const { return m_renderFlowThreadList.get(); } 183 183 184 bool hasRenderFlowThread() const { return m_currentRenderFlowThread; }185 RenderFlowThread* currentRenderFlowThread() const { return m_currentRenderFlowThread; }186 void setCurrentRenderFlowThread(RenderFlowThread* flowThread) { m_currentRenderFlowThread = flowThread; }187 188 184 void styleDidChange(StyleDifference, const RenderStyle* oldStyle); 189 185 … … 201 197 { 202 198 // We push LayoutState even if layoutState is disabled because it stores layoutDelta too. 203 if (!doingFullRepaint() || renderer->hasColumns() || m_layoutState->isPaginated() || hasRenderFlowThread()) {199 if (!doingFullRepaint() || renderer->hasColumns() || m_layoutState->isPaginated()) { 204 200 m_layoutState = new (renderArena()) LayoutState(m_layoutState, renderer, offset, pageHeight, pageHeightChanged, colInfo); 205 201 return true; … … 270 266 #endif 271 267 OwnPtr<RenderFlowThreadList> m_renderFlowThreadList; 272 RenderFlowThread* m_currentRenderFlowThread;273 268 }; 274 269
Note: See TracChangeset
for help on using the changeset viewer.