Index: Source/core/rendering/RenderObject.cpp |
diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
index 28e058a10c13d06af1aca5dfe9bf13290eda4a65..1f43a15ccd754df3432427486f86a32a8242e109 100644 |
--- a/Source/core/rendering/RenderObject.cpp |
+++ b/Source/core/rendering/RenderObject.cpp |
@@ -1654,32 +1654,35 @@ static bool shouldUseSelectionColor(const RenderStyle& style) |
Color RenderObject::selectionBackgroundColor() const |
{ |
- Color color; |
+ Color backgroundColor= Color::transparent; |
if (shouldUseSelectionColor(*style())) { |
RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION)); |
- if (pseudoStyle && resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).isValid()) |
- color = resolveColor(pseudoStyle.get(), CSSPropertyBackgroundColor).blendWithWhite(); |
- else |
- color = frame()->selection()->isFocusedAndActive() ? |
- theme()->activeSelectionBackgroundColor() : |
- theme()->inactiveSelectionBackgroundColor(); |
+ if (pseudoStyle) { |
+ StyleColor styleColor = resolveCurrentColor(pseudoStyle.get(), CSSPropertyBackgroundColor); |
+ if (styleColor.isValid()) |
+ return styleColor.color().blendWithWhite(); |
+ } |
+ |
+ backgroundColor = frame()->selection()->isFocusedAndActive() ? |
+ theme()->activeSelectionBackgroundColor() : |
+ theme()->inactiveSelectionBackgroundColor(); |
} |
- return color; |
+ return backgroundColor; |
} |
Color RenderObject::selectionColor(int colorProperty) const |
{ |
- Color color; |
// If the element is unselectable, or we are only painting the selection, |
// don't override the foreground color with the selection foreground color. |
if (!shouldUseSelectionColor(*style()) |
|| (frame()->view()->paintBehavior() & PaintBehaviorSelectionOnly)) |
- return color; |
+ return Color::transparent; |
+ Color color; |
if (RefPtr<RenderStyle> pseudoStyle = getUncachedPseudoStyle(PseudoStyleRequest(SELECTION))) { |
- Color selectionColor = resolveColor(pseudoStyle.get(), colorProperty); |
- color = selectionColor.isValid() ? selectionColor : resolveColor(pseudoStyle.get(), CSSPropertyColor); |
+ StyleColor styleColor = resolveCurrentColor(pseudoStyle.get(), colorProperty); |
+ color = styleColor.isValid() ? styleColor.color() : resolveColor(pseudoStyle.get(), CSSPropertyColor); |
} else |
color = frame()->selection()->isFocusedAndActive() ? |
theme()->activeSelectionForegroundColor() : |
@@ -2870,20 +2873,20 @@ bool RenderObject::hasBlendMode() const |
static Color decorationColor(const RenderObject* object, RenderStyle* style) |
{ |
- Color result; |
+ StyleColor result; |
// Check for text decoration color first. |
- result = object->resolveColor(style, CSSPropertyTextDecorationColor); |
+ result = object->resolveStyleColor(style, CSSPropertyTextDecorationColor); |
if (result.isValid()) |
- return result; |
+ return result.color(); |
if (style->textStrokeWidth() > 0) { |
// Prefer stroke color if possible but not if it's fully transparent. |
result = object->resolveColor(style, CSSPropertyWebkitTextStrokeColor); |
if (result.alpha()) |
- return result; |
+ return result.color(); |
} |
result = object->resolveColor(style, CSSPropertyWebkitTextFillColor); |
- return result; |
+ return result.color(); |
} |
void RenderObject::getTextDecorationColors(int decorations, Color& underline, Color& overline, |