Home | History | Annotate | Download | only in rendering

Lines Matching refs:MarginInfo

86 // Our MarginInfo state used when laying out block children.
87 RenderBlock::MarginInfo::MarginInfo(RenderBlock* block, int beforeBorderPadding, int afterBorderPadding)
1481 void RenderBlock::adjustPositionedBlock(RenderBox* child, const MarginInfo& marginInfo)
1490 if (!marginInfo.canCollapseWithMarginBefore()) {
1493 int collapsedBeforePos = marginInfo.positiveMargin();
1494 int collapsedBeforeNeg = marginInfo.negativeMargin();
1511 void RenderBlock::adjustFloatingBlock(const MarginInfo& marginInfo)
1526 int marginOffset = marginInfo.canCollapseWithMarginBefore() ? 0 : marginInfo.margin();
1532 bool RenderBlock::handleSpecialChild(RenderBox* child, const MarginInfo& marginInfo)
1535 return handlePositionedChild(child, marginInfo)
1536 || handleFloatingChild(child, marginInfo)
1541 bool RenderBlock::handlePositionedChild(RenderBox* child, const MarginInfo& marginInfo)
1545 adjustPositionedBlock(child, marginInfo);
1551 bool RenderBlock::handleFloatingChild(RenderBox* child, const MarginInfo& marginInfo)
1555 adjustFloatingBlock(marginInfo);
1623 int RenderBlock::collapseMargins(RenderBox* child, MarginInfo& marginInfo)
1643 if (marginInfo.canCollapseWithMarginBefore()) {
1647 if (!document()->inQuirksMode() || !marginInfo.quirkContainer() || !topQuirk)
1654 if (!marginInfo.determinedMarginBeforeQuirk() && !topQuirk && (posTop - negTop)) {
1656 marginInfo.setDeterminedMarginBeforeQuirk(true);
1659 if (!marginInfo.determinedMarginBeforeQuirk() && topQuirk && !marginBefore())
1668 if (marginInfo.quirkContainer() && marginInfo.atBeforeSideOfBlock() && (posTop - negTop))
1669 marginInfo.setMarginBeforeQuirk(topQuirk);
1677 int collapsedBeforePos = max(marginInfo.positiveMargin(), childMargins.positiveMarginBefore());
1678 int collapsedBeforeNeg = max(marginInfo.negativeMargin(), childMargins.negativeMarginBefore());
1679 marginInfo.setMargin(collapsedBeforePos, collapsedBeforeNeg);
1683 marginInfo.setPositiveMarginIfLarger(childMargins.positiveMarginAfter());
1684 marginInfo.setNegativeMarginIfLarger(childMargins.negativeMarginAfter());
1686 if (!marginInfo.canCollapseWithMarginBefore())
1695 setLogicalHeight(logicalHeight() + marginInfo.margin() + marginBeforeForChild(child));
1698 else if (!marginInfo.atBeforeSideOfBlock() ||
1699 (!marginInfo.canCollapseMarginBeforeWithChildren()
1700 && (!document()->inQuirksMode() || !marginInfo.quirkContainer() || !marginInfo.marginBeforeQuirk()))) {
1703 setLogicalHeight(logicalHeight() + max(marginInfo.positiveMargin(), posTop) - max(marginInfo.negativeMargin(), negTop));
1707 marginInfo.setPositiveMargin(childMargins.positiveMarginAfter());
1708 marginInfo.setNegativeMargin(childMargins.negativeMarginAfter());
1710 if (marginInfo.margin())
1711 marginInfo.setMarginAfterQuirk(child->isMarginAfterQuirk() || style()->marginAfterCollapse() == MDISCARD);
1725 int RenderBlock::clearFloatsIfNeeded(RenderBox* child, MarginInfo& marginInfo, int oldTopPosMargin, int oldTopNegMargin, int yPos)
1747 marginInfo.setPositiveMargin(childMargins.positiveMarginAfter());
1748 marginInfo.setNegativeMargin(childMargins.negativeMarginAfter());
1750 marginInfo.setPositiveMargin(max(childMargins.positiveMarginBefore(), childMargins.positiveMarginAfter()));
1751 marginInfo.setNegativeMargin(max(childMargins.negativeMarginBefore(), childMargins.negativeMarginAfter()));
1756 setLogicalHeight(child->y() - max(0, marginInfo.margin()));
1761 if (marginInfo.canCollapseWithMarginBefore()) {
1768 marginInfo.setAtBeforeSideOfBlock(false);
1774 int RenderBlock::estimateLogicalTopPosition(RenderBox* child, const MarginInfo& marginInfo)
1779 if (!marginInfo.canCollapseWithMarginBefore()) {
1781 logicalTopEstimate += max(marginInfo.margin(), childMarginBefore);
1838 MarginInfo& marginInfo)
1840 if (marginInfo.canCollapseWithMarginAfter() && !marginInfo.canCollapseWithMarginBefore()) {
1843 setMaxMarginAfterValues(max(maxPositiveMarginAfter(), marginInfo.positiveMargin()), max(maxNegativeMarginAfter(), marginInfo.negativeMargin()));
1845 if (!marginInfo.marginAfterQuirk())
1848 if (marginInfo.marginAfterQuirk() && marginAfter() == 0)
1856 void RenderBlock::handleAfterSideOfBlock(int beforeSide, int afterSide, MarginInfo& marginInfo)
1858 marginInfo.setAtAfterSideOfBlock(true);
1861 if (!marginInfo.canCollapseWithMarginAfter() && !marginInfo.canCollapseWithMarginBefore()
1862 && (!document()->inQuirksMode() || !marginInfo.quirkContainer() || !marginInfo.marginAfterQuirk()))
1863 setLogicalHeight(logicalHeight() + marginInfo.margin());
1873 setCollapsedBottomMargin(marginInfo);
1928 MarginInfo marginInfo(this, beforeEdge, afterEdge);
1959 if (handleSpecialChild(child, marginInfo))
1963 layoutBlockChild(child, marginInfo, previousFloatLogicalBottom, maxFloatLogicalBottom);
1968 handleAfterSideOfBlock(beforeEdge, afterEdge, marginInfo);
1971 void RenderBlock::layoutBlockChild(RenderBox* child, MarginInfo& marginInfo, int& previousFloatLogicalBottom, int& maxFloatLogicalBottom)
1981 marginInfo.setAtBeforeSideOfBlock(false);
1982 marginInfo.clearMargin();
1988 int logicalTopEstimate = estimateLogicalTopPosition(child, marginInfo);
2028 bool atBeforeSideOfBlock = marginInfo.atBeforeSideOfBlock();
2032 int logicalTopBeforeClear = collapseMargins(child, marginInfo);
2035 int logicalTopAfterClear = clearFloatsIfNeeded(child, marginInfo, oldPosMarginBefore, oldNegMarginBefore, logicalTopBeforeClear);
2097 if (marginInfo.atBeforeSideOfBlock() && !child->isSelfCollapsingBlock())
2098 marginInfo.setAtBeforeSideOfBlock(false);
2107 marginInfo.clearMargin();
2132 int newHeight = applyAfterBreak(child, logicalHeight(), marginInfo);
6059 int RenderBlock::applyAfterBreak(RenderBox* child, int logicalOffset, MarginInfo& marginInfo)
6066 marginInfo.setMarginAfterQuirk(true); // Cause margins to be discarded for any following content.