Index: Source/core/rendering/RenderBoxModelObject.cpp |
diff --git a/Source/core/rendering/RenderBoxModelObject.cpp b/Source/core/rendering/RenderBoxModelObject.cpp |
index 809d44c78e4bcc1cd621a90954b8d350fc564eca..f2094be1e75a35b074d7d4e240caa99e510291d9 100644 |
--- a/Source/core/rendering/RenderBoxModelObject.cpp |
+++ b/Source/core/rendering/RenderBoxModelObject.cpp |
@@ -509,14 +509,14 @@ RoundedRect RenderBoxModelObject::backgroundRoundedRectAdjustedForBleedAvoidance |
return getBackgroundRoundedRect(borderRect, box, boxSize.width(), boxSize.height(), includeLogicalLeftEdge, includeLogicalRightEdge); |
} |
-static void applyBoxShadowForBackground(GraphicsContext* context, RenderStyle* style) |
+static void applyBoxShadowForBackground(GraphicsContext* context, const RenderObject* renderer) |
{ |
- const ShadowData* boxShadow = style->boxShadow(); |
+ const ShadowData* boxShadow = renderer->style()->boxShadow(); |
while (boxShadow->style() != Normal) |
boxShadow = boxShadow->next(); |
FloatSize shadowOffset(boxShadow->x(), boxShadow->y()); |
- context->setShadow(shadowOffset, boxShadow->blur(), boxShadow->color(), |
+ context->setShadow(shadowOffset, boxShadow->blur(), renderer->resolveColor(boxShadow->color()), |
DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresAlpha); |
} |
@@ -573,7 +573,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
bool boxShadowShouldBeAppliedToBackground = this->boxShadowShouldBeAppliedToBackground(bleedAvoidance, box); |
GraphicsContextStateSaver shadowStateSaver(*context, boxShadowShouldBeAppliedToBackground); |
if (boxShadowShouldBeAppliedToBackground) |
- applyBoxShadowForBackground(context, style()); |
+ applyBoxShadowForBackground(context, this); |
if (hasRoundedBorder && bleedAvoidance != BackgroundBleedUseTransparencyLayer) { |
RoundedRect border = backgroundRoundedRectAdjustedForBleedAvoidance(context, rect, bleedAvoidance, box, boxSize, includeLeftEdge, includeRightEdge); |
@@ -717,7 +717,7 @@ void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co |
GraphicsContextStateSaver shadowStateSaver(*context, boxShadowShouldBeAppliedToBackground); |
if (boxShadowShouldBeAppliedToBackground) |
- applyBoxShadowForBackground(context, style()); |
+ applyBoxShadowForBackground(context, this); |
if (baseColor.alpha()) { |
if (bgColor.alpha()) |
@@ -1784,7 +1784,7 @@ void RenderBoxModelObject::paintBorder(const PaintInfo& info, const LayoutRect& |
path.addRoundedRect(innerBorder); |
else |
path.addRect(innerBorder.rect()); |
- |
+ |
graphicsContext->setFillRule(RULE_EVENODD); |
graphicsContext->setFillColor(edges[firstVisibleEdge].color); |
graphicsContext->fillPath(path); |
@@ -2289,25 +2289,25 @@ void RenderBoxModelObject::getBorderEdgeInfo(BorderEdge edges[], const RenderSty |
bool horizontal = style->isHorizontalWritingMode(); |
edges[BSTop] = BorderEdge(style->borderTopWidth(), |
- style->visitedDependentColor(CSSPropertyBorderTopColor), |
+ resolveColor(style, CSSPropertyBorderTopColor), |
style->borderTopStyle(), |
style->borderTopIsTransparent(), |
horizontal || includeLogicalLeftEdge); |
edges[BSRight] = BorderEdge(style->borderRightWidth(), |
- style->visitedDependentColor(CSSPropertyBorderRightColor), |
+ resolveColor(style, CSSPropertyBorderRightColor), |
style->borderRightStyle(), |
style->borderRightIsTransparent(), |
!horizontal || includeLogicalRightEdge); |
edges[BSBottom] = BorderEdge(style->borderBottomWidth(), |
- style->visitedDependentColor(CSSPropertyBorderBottomColor), |
+ resolveColor(style, CSSPropertyBorderBottomColor), |
style->borderBottomStyle(), |
style->borderBottomIsTransparent(), |
horizontal || includeLogicalRightEdge); |
edges[BSLeft] = BorderEdge(style->borderLeftWidth(), |
- style->visitedDependentColor(CSSPropertyBorderLeftColor), |
+ resolveColor(style, CSSPropertyBorderLeftColor), |
style->borderLeftStyle(), |
style->borderLeftIsTransparent(), |
!horizontal || includeLogicalLeftEdge); |
@@ -2374,7 +2374,7 @@ bool RenderBoxModelObject::boxShadowShouldBeAppliedToBackground(BackgroundBleedA |
if (!hasOneNormalBoxShadow) |
return false; |
- Color backgroundColor = style()->visitedDependentColor(CSSPropertyBackgroundColor); |
+ Color backgroundColor = resolveColor(CSSPropertyBackgroundColor); |
if (!backgroundColor.isValid() || backgroundColor.hasAlpha()) |
return false; |
@@ -2436,7 +2436,7 @@ void RenderBoxModelObject::paintBoxShadow(const PaintInfo& info, const LayoutRec |
if (shadowOffset.isZero() && !shadowBlur && !shadowSpread) |
continue; |
- const Color& shadowColor = shadow->color(); |
+ const Color& shadowColor = resolveColor(shadow->color()); |
if (shadow->style() == Normal) { |
RoundedRect fillRect = border; |