| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv
ed. |
| 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 } | 93 } |
| 94 } | 94 } |
| 95 | 95 |
| 96 RenderBoxModelObject::styleWillChange(diff, newStyle); | 96 RenderBoxModelObject::styleWillChange(diff, newStyle); |
| 97 } | 97 } |
| 98 | 98 |
| 99 void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle
) | 99 void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle
) |
| 100 { | 100 { |
| 101 RenderBoxModelObject::styleDidChange(diff, oldStyle); | 101 RenderBoxModelObject::styleDidChange(diff, oldStyle); |
| 102 | 102 |
| 103 RenderStyle* newStyle = style(); | 103 if (needsLayout() && oldStyle) |
| 104 if (needsLayout() && oldStyle) { | |
| 105 RenderBlock::removePercentHeightDescendantIfNeeded(this); | 104 RenderBlock::removePercentHeightDescendantIfNeeded(this); |
| 106 | |
| 107 // Normally we can do optimized positioning layout for absolute/fixed po
sitioned objects. There is one special case, however, which is | |
| 108 // when the positioned object's margin-before is changed. In this case t
he parent has to get a layout in order to run margin collapsing | |
| 109 // to determine the new static position. | |
| 110 if (isOutOfFlowPositioned() && newStyle->hasStaticBlockPosition() && old
Style->marginBefore() != newStyle->marginBefore() | |
| 111 && parent() && !parent()->normalChildNeedsLayout()) | |
| 112 parent()->setChildNeedsLayout(); | |
| 113 } | |
| 114 } | 105 } |
| 115 | 106 |
| 116 void RenderBox::updateFromStyle() | 107 void RenderBox::updateFromStyle() |
| 117 { | 108 { |
| 118 RenderBoxModelObject::updateFromStyle(); | 109 RenderBoxModelObject::updateFromStyle(); |
| 119 | 110 |
| 120 RenderStyle* styleToUse = style(); | 111 RenderStyle* styleToUse = style(); |
| 121 | 112 |
| 122 if (isRenderView()) { | 113 if (isRenderView()) { |
| 123 setHasBoxDecorationBackground(true); | 114 setHasBoxDecorationBackground(true); |
| (...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1119 m_rareData->m_inlineBoxWrapper = 0; | 1110 m_rareData->m_inlineBoxWrapper = 0; |
| 1120 } else { | 1111 } else { |
| 1121 inlineBoxWrapper()->dirtyLineBoxes(); | 1112 inlineBoxWrapper()->dirtyLineBoxes(); |
| 1122 } | 1113 } |
| 1123 } | 1114 } |
| 1124 } | 1115 } |
| 1125 | 1116 |
| 1126 void RenderBox::positionLineBox(InlineBox* box) | 1117 void RenderBox::positionLineBox(InlineBox* box) |
| 1127 { | 1118 { |
| 1128 if (isOutOfFlowPositioned()) { | 1119 if (isOutOfFlowPositioned()) { |
| 1129 // Cache the x position only if we were an INLINE type originally. | |
| 1130 bool wasInline = style()->isOriginalDisplayInlineType(); | |
| 1131 if (wasInline) { | |
| 1132 // The value is cached in the xPos of the box. We only need this va
lue if | |
| 1133 // our object was inline originally, since otherwise it would have e
nded up underneath | |
| 1134 // the inlines. | |
| 1135 RootInlineBox& root = box->root(); | |
| 1136 root.block().setStaticInlinePositionForChild(this, LayoutUnit::fromF
loatRound(box->logicalLeft())); | |
| 1137 if (style()->hasStaticInlinePosition()) | |
| 1138 setChildNeedsLayout(MarkOnlyThis); // Just go ahead and mark the
positioned object as needing layout, so it will update its position properly. | |
| 1139 } else { | |
| 1140 // Our object was a block originally, so we make our normal flow pos
ition be | |
| 1141 // just below the line box (as though all the inlines that came befo
re us got | |
| 1142 // wrapped in an anonymous block, which is what would have happened
had we been | |
| 1143 // in flow). This value was cached in the y() of the box. | |
| 1144 layer()->setStaticBlockPosition(box->logicalTop()); | |
| 1145 if (style()->hasStaticBlockPosition()) | |
| 1146 setChildNeedsLayout(MarkOnlyThis); // Just go ahead and mark the
positioned object as needing layout, so it will update its position properly. | |
| 1147 } | |
| 1148 | |
| 1149 // Nuke the box. | |
| 1150 box->remove(DontMarkLineBoxes); | 1120 box->remove(DontMarkLineBoxes); |
| 1151 box->destroy(); | 1121 box->destroy(); |
| 1152 } else if (isReplaced()) { | 1122 } else if (isReplaced()) { |
| 1153 setLocation(roundedLayoutPoint(box->topLeft())); | 1123 setLocation(roundedLayoutPoint(box->topLeft())); |
| 1154 setInlineBoxWrapper(box); | 1124 setInlineBoxWrapper(box); |
| 1155 } | 1125 } |
| 1156 } | 1126 } |
| 1157 | 1127 |
| 1158 void RenderBox::deleteLineBoxWrapper() | 1128 void RenderBox::deleteLineBoxWrapper() |
| 1159 { | 1129 { |
| (...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1774 } | 1744 } |
| 1775 | 1745 |
| 1776 LayoutUnit RenderBox::containingBlockLogicalHeightForPositioned(const RenderBoxM
odelObject* containingBlock) const | 1746 LayoutUnit RenderBox::containingBlockLogicalHeightForPositioned(const RenderBoxM
odelObject* containingBlock) const |
| 1777 { | 1747 { |
| 1778 ASSERT(containingBlock->isBox()); | 1748 ASSERT(containingBlock->isBox()); |
| 1779 const RenderBlock* cb = containingBlock->isRenderBlock() ? | 1749 const RenderBlock* cb = containingBlock->isRenderBlock() ? |
| 1780 toRenderBlock(containingBlock) : containingBlock->containingBlock(); | 1750 toRenderBlock(containingBlock) : containingBlock->containingBlock(); |
| 1781 return cb->clientLogicalHeight(); | 1751 return cb->clientLogicalHeight(); |
| 1782 } | 1752 } |
| 1783 | 1753 |
| 1784 static void computeInlineStaticDistance(Length& logicalLeft, Length& logicalRigh
t, const RenderBox* child, const RenderBoxModelObject* containerBlock, LayoutUni
t containerLogicalWidth) | 1754 static void computePositionedStaticDistance(Length& leftOrTop, Length& rightOrBo
ttom) |
| 1785 { | 1755 { |
| 1786 if (!logicalLeft.isAuto() || !logicalRight.isAuto()) | 1756 if (!leftOrTop.isAuto() || !rightOrBottom.isAuto()) |
| 1787 return; | 1757 return; |
| 1788 | 1758 leftOrTop.setValue(Fixed, 0); |
| 1789 // FIXME: The static distance computation has not been patched for mixed wri
ting modes yet. | |
| 1790 if (child->parent()->style()->direction() == LTR) { | |
| 1791 LayoutUnit staticPosition = child->layer()->staticInlinePosition() - con
tainerBlock->borderLogicalLeft(); | |
| 1792 for (RenderObject* curr = child->parent(); curr && curr != containerBloc
k; curr = curr->container()) { | |
| 1793 if (curr->isBox()) | |
| 1794 staticPosition += toRenderBox(curr)->logicalLeft(); | |
| 1795 } | |
| 1796 logicalLeft.setValue(Fixed, staticPosition); | |
| 1797 } else { | |
| 1798 RenderBox* enclosingBox = child->parent()->enclosingBox(); | |
| 1799 LayoutUnit staticPosition = child->layer()->staticInlinePosition() + con
tainerLogicalWidth + containerBlock->borderLogicalLeft(); | |
| 1800 for (RenderObject* curr = child->parent(); curr; curr = curr->container(
)) { | |
| 1801 if (curr->isBox()) { | |
| 1802 if (curr != containerBlock) | |
| 1803 staticPosition -= toRenderBox(curr)->logicalLeft(); | |
| 1804 if (curr == enclosingBox) | |
| 1805 staticPosition -= enclosingBox->logicalWidth(); | |
| 1806 } | |
| 1807 if (curr == containerBlock) | |
| 1808 break; | |
| 1809 } | |
| 1810 logicalRight.setValue(Fixed, staticPosition); | |
| 1811 } | |
| 1812 } | 1759 } |
| 1813 | 1760 |
| 1814 void RenderBox::computePositionedLogicalWidth(LogicalExtentComputedValues& compu
tedValues) const | 1761 void RenderBox::computePositionedLogicalWidth(LogicalExtentComputedValues& compu
tedValues) const |
| 1815 { | 1762 { |
| 1816 if (isReplaced()) { | 1763 if (isReplaced()) { |
| 1817 computePositionedLogicalWidthReplaced(computedValues); | 1764 computePositionedLogicalWidthReplaced(computedValues); |
| 1818 return; | 1765 return; |
| 1819 } | 1766 } |
| 1820 | 1767 |
| 1821 // QUESTIONS | 1768 // QUESTIONS |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1871 * user agents are free to make a guess at its probable position. | 1818 * user agents are free to make a guess at its probable position. |
| 1872 * | 1819 * |
| 1873 * For the purposes of calculating the static position, the containing block
of | 1820 * For the purposes of calculating the static position, the containing block
of |
| 1874 * fixed positioned elements is the initial containing block instead of the | 1821 * fixed positioned elements is the initial containing block instead of the |
| 1875 * viewport, and all scrollable boxes should be assumed to be scrolled to th
eir | 1822 * viewport, and all scrollable boxes should be assumed to be scrolled to th
eir |
| 1876 * origin. | 1823 * origin. |
| 1877 \*--------------------------------------------------------------------------
-*/ | 1824 \*--------------------------------------------------------------------------
-*/ |
| 1878 | 1825 |
| 1879 // see FIXME 1 | 1826 // see FIXME 1 |
| 1880 // Calculate the static distance if needed. | 1827 // Calculate the static distance if needed. |
| 1881 computeInlineStaticDistance(logicalLeftLength, logicalRightLength, this, con
tainerBlock, containerLogicalWidth); | 1828 computePositionedStaticDistance(logicalLeftLength, logicalRightLength); |
| 1882 | 1829 |
| 1883 // Calculate constraint equation values for 'width' case. | 1830 // Calculate constraint equation values for 'width' case. |
| 1884 computePositionedLogicalWidthUsing(style()->logicalWidth(), containerBlock,
containerDirection, | 1831 computePositionedLogicalWidthUsing(style()->logicalWidth(), containerBlock,
containerDirection, |
| 1885 containerLogicalWidth, bordersPlusPadding
, | 1832 containerLogicalWidth, bordersPlusPadding
, |
| 1886 logicalLeftLength, logicalRightLength, ma
rginLogicalLeft, marginLogicalRight, | 1833 logicalLeftLength, logicalRightLength, ma
rginLogicalLeft, marginLogicalRight, |
| 1887 computedValues); | 1834 computedValues); |
| 1888 | 1835 |
| 1889 // Calculate constraint equation values for 'max-width' case. | 1836 // Calculate constraint equation values for 'max-width' case. |
| 1890 if (!style()->logicalMaxWidth().isMaxSizeNone()) { | 1837 if (!style()->logicalMaxWidth().isMaxSizeNone()) { |
| 1891 LogicalExtentComputedValues maxValues; | 1838 LogicalExtentComputedValues maxValues; |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2108 if (firstLine && lastLine && firstLine != lastLine) { | 2055 if (firstLine && lastLine && firstLine != lastLine) { |
| 2109 computedValues.m_position = logicalLeftValue + marginLogicalLeftValu
e + lastLine->borderLogicalLeft() + (lastLine->logicalLeft() - firstLine->logica
lLeft()); | 2056 computedValues.m_position = logicalLeftValue + marginLogicalLeftValu
e + lastLine->borderLogicalLeft() + (lastLine->logicalLeft() - firstLine->logica
lLeft()); |
| 2110 return; | 2057 return; |
| 2111 } | 2058 } |
| 2112 } | 2059 } |
| 2113 | 2060 |
| 2114 computedValues.m_position = logicalLeftValue + marginLogicalLeftValue; | 2061 computedValues.m_position = logicalLeftValue + marginLogicalLeftValue; |
| 2115 computeLogicalLeftPositionedOffset(computedValues.m_position, this, computed
Values.m_extent, containerBlock, containerLogicalWidth); | 2062 computeLogicalLeftPositionedOffset(computedValues.m_position, this, computed
Values.m_extent, containerBlock, containerLogicalWidth); |
| 2116 } | 2063 } |
| 2117 | 2064 |
| 2118 static void computeBlockStaticDistance(Length& logicalTop, Length& logicalBottom
, const RenderBox* child, const RenderBoxModelObject* containerBlock) | |
| 2119 { | |
| 2120 if (!logicalTop.isAuto() || !logicalBottom.isAuto()) | |
| 2121 return; | |
| 2122 | |
| 2123 // FIXME: The static distance computation has not been patched for mixed wri
ting modes. | |
| 2124 LayoutUnit staticLogicalTop = child->layer()->staticBlockPosition() - contai
nerBlock->borderBefore(); | |
| 2125 for (RenderObject* curr = child->parent(); curr && curr != containerBlock; c
urr = curr->container()) { | |
| 2126 if (curr->isBox()) | |
| 2127 staticLogicalTop += toRenderBox(curr)->logicalTop(); | |
| 2128 } | |
| 2129 logicalTop.setValue(Fixed, staticLogicalTop); | |
| 2130 } | |
| 2131 | |
| 2132 void RenderBox::computePositionedLogicalHeight(LogicalExtentComputedValues& comp
utedValues) const | 2065 void RenderBox::computePositionedLogicalHeight(LogicalExtentComputedValues& comp
utedValues) const |
| 2133 { | 2066 { |
| 2134 if (isReplaced()) { | 2067 if (isReplaced()) { |
| 2135 computePositionedLogicalHeightReplaced(computedValues); | 2068 computePositionedLogicalHeightReplaced(computedValues); |
| 2136 return; | 2069 return; |
| 2137 } | 2070 } |
| 2138 | 2071 |
| 2139 // The following is based off of the W3C Working Draft from April 11, 2006 o
f | 2072 // The following is based off of the W3C Working Draft from April 11, 2006 o
f |
| 2140 // CSS 2.1: Section 10.6.4 "Absolutely positioned, non-replaced elements" | 2073 // CSS 2.1: Section 10.6.4 "Absolutely positioned, non-replaced elements" |
| 2141 // <http://www.w3.org/TR/2005/WD-CSS21-20050613/visudet.html#abs-non-replace
d-height> | 2074 // <http://www.w3.org/TR/2005/WD-CSS21-20050613/visudet.html#abs-non-replace
d-height> |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2167 * But rather than actually calculating the dimensions of that hypothetical | 2100 * But rather than actually calculating the dimensions of that hypothetical |
| 2168 * box, user agents are free to make a guess at its probable position. | 2101 * box, user agents are free to make a guess at its probable position. |
| 2169 * | 2102 * |
| 2170 * For the purposes of calculating the static position, the containing block | 2103 * For the purposes of calculating the static position, the containing block |
| 2171 * of fixed positioned elements is the initial containing block instead of | 2104 * of fixed positioned elements is the initial containing block instead of |
| 2172 * the viewport. | 2105 * the viewport. |
| 2173 \*--------------------------------------------------------------------------
-*/ | 2106 \*--------------------------------------------------------------------------
-*/ |
| 2174 | 2107 |
| 2175 // see FIXME 1 | 2108 // see FIXME 1 |
| 2176 // Calculate the static distance if needed. | 2109 // Calculate the static distance if needed. |
| 2177 computeBlockStaticDistance(logicalTopLength, logicalBottomLength, this, cont
ainerBlock); | 2110 computePositionedStaticDistance(logicalTopLength, logicalBottomLength); |
| 2178 | 2111 |
| 2179 // Calculate constraint equation values for 'height' case. | 2112 // Calculate constraint equation values for 'height' case. |
| 2180 LayoutUnit logicalHeight = computedValues.m_extent; | 2113 LayoutUnit logicalHeight = computedValues.m_extent; |
| 2181 computePositionedLogicalHeightUsing(styleToUse->logicalHeight(), containerBl
ock, containerLogicalHeight, bordersPlusPadding, logicalHeight, | 2114 computePositionedLogicalHeightUsing(styleToUse->logicalHeight(), containerBl
ock, containerLogicalHeight, bordersPlusPadding, logicalHeight, |
| 2182 logicalTopLength, logicalBottomLength, m
arginBefore, marginAfter, | 2115 logicalTopLength, logicalBottomLength, m
arginBefore, marginAfter, |
| 2183 computedValues); | 2116 computedValues); |
| 2184 | 2117 |
| 2185 // Avoid doing any work in the common case (where the values of min-height a
nd max-height are their defaults). | 2118 // Avoid doing any work in the common case (where the values of min-height a
nd max-height are their defaults). |
| 2186 // see FIXME 2 | 2119 // see FIXME 2 |
| 2187 | 2120 |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2388 computedValues.m_extent = computeReplacedLogicalWidth() + borderAndPaddingLo
gicalWidth(); | 2321 computedValues.m_extent = computeReplacedLogicalWidth() + borderAndPaddingLo
gicalWidth(); |
| 2389 | 2322 |
| 2390 const LayoutUnit availableSpace = containerLogicalWidth - computedValues.m_e
xtent; | 2323 const LayoutUnit availableSpace = containerLogicalWidth - computedValues.m_e
xtent; |
| 2391 | 2324 |
| 2392 /*-----------------------------------------------------------------------*\ | 2325 /*-----------------------------------------------------------------------*\ |
| 2393 * 2. If both 'left' and 'right' have the value 'auto', then if 'direction' | 2326 * 2. If both 'left' and 'right' have the value 'auto', then if 'direction' |
| 2394 * of the containing block is 'ltr', set 'left' to the static position; | 2327 * of the containing block is 'ltr', set 'left' to the static position; |
| 2395 * else if 'direction' is 'rtl', set 'right' to the static position. | 2328 * else if 'direction' is 'rtl', set 'right' to the static position. |
| 2396 \*-----------------------------------------------------------------------*/ | 2329 \*-----------------------------------------------------------------------*/ |
| 2397 // see FIXME 1 | 2330 // see FIXME 1 |
| 2398 computeInlineStaticDistance(logicalLeft, logicalRight, this, containerBlock,
containerLogicalWidth); | 2331 computePositionedStaticDistance(logicalLeft, logicalRight); |
| 2399 | 2332 |
| 2400 /*-----------------------------------------------------------------------*\ | 2333 /*-----------------------------------------------------------------------*\ |
| 2401 * 3. If 'left' or 'right' are 'auto', replace any 'auto' on 'margin-left' | 2334 * 3. If 'left' or 'right' are 'auto', replace any 'auto' on 'margin-left' |
| 2402 * or 'margin-right' with '0'. | 2335 * or 'margin-right' with '0'. |
| 2403 \*-----------------------------------------------------------------------*/ | 2336 \*-----------------------------------------------------------------------*/ |
| 2404 if (logicalLeft.isAuto() || logicalRight.isAuto()) { | 2337 if (logicalLeft.isAuto() || logicalRight.isAuto()) { |
| 2405 if (marginLogicalLeft.isAuto()) | 2338 if (marginLogicalLeft.isAuto()) |
| 2406 marginLogicalLeft.setValue(Fixed, 0); | 2339 marginLogicalLeft.setValue(Fixed, 0); |
| 2407 if (marginLogicalRight.isAuto()) | 2340 if (marginLogicalRight.isAuto()) |
| 2408 marginLogicalRight.setValue(Fixed, 0); | 2341 marginLogicalRight.setValue(Fixed, 0); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2550 // are dealt with in computeReplacedHeight(). This means that the steps to
produce | 2483 // are dealt with in computeReplacedHeight(). This means that the steps to
produce |
| 2551 // correct max/min in the non-replaced version, are not necessary. | 2484 // correct max/min in the non-replaced version, are not necessary. |
| 2552 computedValues.m_extent = computeReplacedLogicalHeight() + borderAndPaddingL
ogicalHeight(); | 2485 computedValues.m_extent = computeReplacedLogicalHeight() + borderAndPaddingL
ogicalHeight(); |
| 2553 const LayoutUnit availableSpace = containerLogicalHeight - computedValues.m_
extent; | 2486 const LayoutUnit availableSpace = containerLogicalHeight - computedValues.m_
extent; |
| 2554 | 2487 |
| 2555 /*-----------------------------------------------------------------------*\ | 2488 /*-----------------------------------------------------------------------*\ |
| 2556 * 2. If both 'top' and 'bottom' have the value 'auto', replace 'top' | 2489 * 2. If both 'top' and 'bottom' have the value 'auto', replace 'top' |
| 2557 * with the element's static position. | 2490 * with the element's static position. |
| 2558 \*-----------------------------------------------------------------------*/ | 2491 \*-----------------------------------------------------------------------*/ |
| 2559 // see FIXME 1 | 2492 // see FIXME 1 |
| 2560 computeBlockStaticDistance(logicalTop, logicalBottom, this, containerBlock); | 2493 computePositionedStaticDistance(logicalTop, logicalBottom); |
| 2561 | 2494 |
| 2562 /*-----------------------------------------------------------------------*\ | 2495 /*-----------------------------------------------------------------------*\ |
| 2563 * 3. If 'bottom' is 'auto', replace any 'auto' on 'margin-top' or | 2496 * 3. If 'bottom' is 'auto', replace any 'auto' on 'margin-top' or |
| 2564 * 'margin-bottom' with '0'. | 2497 * 'margin-bottom' with '0'. |
| 2565 \*-----------------------------------------------------------------------*/ | 2498 \*-----------------------------------------------------------------------*/ |
| 2566 // FIXME: The spec. says that this step should only be taken when bottom is | 2499 // FIXME: The spec. says that this step should only be taken when bottom is |
| 2567 // auto, but if only top is auto, this makes step 4 impossible. | 2500 // auto, but if only top is auto, this makes step 4 impossible. |
| 2568 if (logicalTop.isAuto() || logicalBottom.isAuto()) { | 2501 if (logicalTop.isAuto() || logicalBottom.isAuto()) { |
| 2569 if (marginBefore.isAuto()) | 2502 if (marginBefore.isAuto()) |
| 2570 marginBefore.setValue(Fixed, 0); | 2503 marginBefore.setValue(Fixed, 0); |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3021 | 2954 |
| 3022 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) | 2955 RenderBox::BoxDecorationData::BoxDecorationData(const RenderStyle& style) |
| 3023 { | 2956 { |
| 3024 backgroundColor = style.colorIncludingFallback(CSSPropertyBackgroundColor); | 2957 backgroundColor = style.colorIncludingFallback(CSSPropertyBackgroundColor); |
| 3025 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); | 2958 hasBackground = backgroundColor.alpha() || style.hasBackgroundImage(); |
| 3026 ASSERT(hasBackground == style.hasBackground()); | 2959 ASSERT(hasBackground == style.hasBackground()); |
| 3027 hasBorder = style.hasBorder(); | 2960 hasBorder = style.hasBorder(); |
| 3028 } | 2961 } |
| 3029 | 2962 |
| 3030 } // namespace blink | 2963 } // namespace blink |
| OLD | NEW |