void RenderNamedFlowFragment::updateOversetState() { ASSERT(isValid()); RenderNamedFlowThread* flowThread = namedFlowThread(); ASSERT(flowThread && (flowThread->inOverflowLayoutPhase() || flowThread->inFinalLayoutPhase())); LayoutUnit flowContentBottom = flowThread->flowContentBottom(); bool isHorizontalWritingMode = flowThread->isHorizontalWritingMode(); LayoutUnit flowMin = flowContentBottom - (isHorizontalWritingMode ? flowThreadPortionRect().y() : flowThreadPortionRect().x()); LayoutUnit flowMax = flowContentBottom - (isHorizontalWritingMode ? flowThreadPortionRect().maxY() : flowThreadPortionRect().maxX()); RegionOversetState previousState = regionOversetState(); RegionOversetState state = RegionFit; if (flowMin <= 0) state = RegionEmpty; if (flowMax > 0 && isLastRegion()) state = RegionOverset; setRegionOversetState(state); // Determine whether the NamedFlow object should dispatch a regionOversetChange event if (previousState != state) flowThread->setDispatchRegionOversetChangeEvent(true); }
void FlowThreadController::updateFlowThreadsIntoMeasureContentPhase() { for (auto iter = m_renderNamedFlowThreadList->begin(), end = m_renderNamedFlowThreadList->end(); iter != end; ++iter) { RenderNamedFlowThread* flowRenderer = *iter; ASSERT(flowRenderer->inFinalLayoutPhase()); flowRenderer->setLayoutPhase(RenderFlowThread::LayoutPhaseMeasureContent); } }