| Index: Source/core/rendering/RenderTheme.cpp
|
| diff --git a/Source/core/rendering/RenderTheme.cpp b/Source/core/rendering/RenderTheme.cpp
|
| index 790b9ed634e69448d728dae88c2a6074372d430c..e182a4d71d046a6d43aa77478d885ed2c3e55dd6 100644
|
| --- a/Source/core/rendering/RenderTheme.cpp
|
| +++ b/Source/core/rendering/RenderTheme.cpp
|
| @@ -68,9 +68,9 @@ namespace WebCore {
|
|
|
| using namespace HTMLNames;
|
|
|
| -static Color& customFocusRingColor()
|
| +static StyleColor& customFocusRingColor()
|
| {
|
| - DEFINE_STATIC_LOCAL(Color, color, ());
|
| + DEFINE_STATIC_LOCAL(StyleColor, color, ());
|
| return color;
|
| }
|
|
|
| @@ -91,6 +91,7 @@ RenderTheme::RenderTheme()
|
| : m_theme(platformTheme())
|
| #endif
|
| {
|
| + m_selectionColorsValid = 0;
|
| }
|
|
|
| void RenderTheme::adjustStyle(RenderStyle* style, Element* e, const CachedUAStyle& uaStyle)
|
| @@ -525,59 +526,88 @@ String RenderTheme::formatMediaControlsCurrentTime(float currentTime, float /*du
|
| return formatMediaControlsTime(currentTime);
|
| }
|
|
|
| +namespace SelectionColors {
|
| +enum {
|
| + ActiveBackground = 1,
|
| + InactiveBackground = 2,
|
| + ActiveForeground = 4,
|
| + InactiveForeground = 8,
|
| + ActiveListBoxBackground = 16,
|
| + InactiveListBoxBackground = 32,
|
| + ActiveListBoxForeground = 64,
|
| + InactiveListBoxForeground = 128
|
| +};
|
| +};
|
| +
|
| Color RenderTheme::activeSelectionBackgroundColor() const
|
| {
|
| - if (!m_activeSelectionBackgroundColor.isValid())
|
| + if (!(m_selectionColorsValid & SelectionColors::ActiveBackground)) {
|
| m_activeSelectionBackgroundColor = platformActiveSelectionBackgroundColor().blendWithWhite();
|
| + m_selectionColorsValid |= SelectionColors::ActiveBackground;
|
| + }
|
| return m_activeSelectionBackgroundColor;
|
| }
|
|
|
| Color RenderTheme::inactiveSelectionBackgroundColor() const
|
| {
|
| - if (!m_inactiveSelectionBackgroundColor.isValid())
|
| + if (!(m_selectionColorsValid & SelectionColors::InactiveBackground)) {
|
| m_inactiveSelectionBackgroundColor = platformInactiveSelectionBackgroundColor().blendWithWhite();
|
| + m_selectionColorsValid |= SelectionColors::InactiveBackground;
|
| + }
|
| return m_inactiveSelectionBackgroundColor;
|
| }
|
|
|
| Color RenderTheme::activeSelectionForegroundColor() const
|
| {
|
| - if (!m_activeSelectionForegroundColor.isValid() && supportsSelectionForegroundColors())
|
| + if (!(m_selectionColorsValid & SelectionColors::ActiveForeground) && supportsSelectionForegroundColors()) {
|
| m_activeSelectionForegroundColor = platformActiveSelectionForegroundColor();
|
| + m_selectionColorsValid |= SelectionColors::ActiveForeground;
|
| + }
|
| return m_activeSelectionForegroundColor;
|
| }
|
|
|
| Color RenderTheme::inactiveSelectionForegroundColor() const
|
| {
|
| - if (!m_inactiveSelectionForegroundColor.isValid() && supportsSelectionForegroundColors())
|
| + if (!(m_selectionColorsValid & SelectionColors::InactiveForeground) && supportsSelectionForegroundColors()) {
|
| m_inactiveSelectionForegroundColor = platformInactiveSelectionForegroundColor();
|
| + m_selectionColorsValid |= SelectionColors::InactiveForeground;
|
| + }
|
| return m_inactiveSelectionForegroundColor;
|
| }
|
|
|
| Color RenderTheme::activeListBoxSelectionBackgroundColor() const
|
| {
|
| - if (!m_activeListBoxSelectionBackgroundColor.isValid())
|
| + if (!(m_selectionColorsValid & SelectionColors::ActiveListBoxBackground)) {
|
| m_activeListBoxSelectionBackgroundColor = platformActiveListBoxSelectionBackgroundColor();
|
| + m_selectionColorsValid |= SelectionColors::ActiveListBoxBackground;
|
| + }
|
| return m_activeListBoxSelectionBackgroundColor;
|
| }
|
|
|
| Color RenderTheme::inactiveListBoxSelectionBackgroundColor() const
|
| {
|
| - if (!m_inactiveListBoxSelectionBackgroundColor.isValid())
|
| + if (!(m_selectionColorsValid & SelectionColors::InactiveListBoxBackground)) {
|
| m_inactiveListBoxSelectionBackgroundColor = platformInactiveListBoxSelectionBackgroundColor();
|
| + m_selectionColorsValid |= SelectionColors::InactiveListBoxBackground;
|
| + }
|
| return m_inactiveListBoxSelectionBackgroundColor;
|
| }
|
|
|
| Color RenderTheme::activeListBoxSelectionForegroundColor() const
|
| {
|
| - if (!m_activeListBoxSelectionForegroundColor.isValid() && supportsListBoxSelectionForegroundColors())
|
| + if (!(m_selectionColorsValid & SelectionColors::ActiveListBoxForeground) && supportsListBoxSelectionForegroundColors()) {
|
| m_activeListBoxSelectionForegroundColor = platformActiveListBoxSelectionForegroundColor();
|
| + m_selectionColorsValid |= SelectionColors::ActiveListBoxForeground;
|
| + }
|
| return m_activeListBoxSelectionForegroundColor;
|
| }
|
|
|
| Color RenderTheme::inactiveListBoxSelectionForegroundColor() const
|
| {
|
| - if (!m_inactiveListBoxSelectionForegroundColor.isValid() && supportsListBoxSelectionForegroundColors())
|
| + if (!(m_selectionColorsValid & SelectionColors::InactiveListBoxForeground) && supportsListBoxSelectionForegroundColors()) {
|
| m_inactiveListBoxSelectionForegroundColor = platformInactiveListBoxSelectionForegroundColor();
|
| + m_selectionColorsValid |= SelectionColors::InactiveListBoxForeground;
|
| + }
|
| return m_inactiveListBoxSelectionForegroundColor;
|
| }
|
|
|
| @@ -659,7 +689,7 @@ static bool isBackgroundOrBorderStyled(const RenderStyle& style, const CachedUAS
|
| // Test the style to see if the UA border and background match.
|
| return style.border() != uaStyle.border
|
| || backgroundLayersCopy != backgroundCopy
|
| - || style.visitedDependentColor(CSSPropertyBackgroundColor) != uaStyle.backgroundColor;
|
| + || style.visitedDependentColor(CSSPropertyBackgroundColor).color() != uaStyle.backgroundColor;
|
| }
|
|
|
| bool RenderTheme::isControlStyled(const RenderStyle* style, const CachedUAStyle& uaStyle) const
|
| @@ -1092,16 +1122,7 @@ void RenderTheme::adjustSearchFieldResultsDecorationStyle(RenderStyle*, Element*
|
|
|
| void RenderTheme::platformColorsDidChange()
|
| {
|
| - m_activeSelectionForegroundColor = Color();
|
| - m_inactiveSelectionForegroundColor = Color();
|
| - m_activeSelectionBackgroundColor = Color();
|
| - m_inactiveSelectionBackgroundColor = Color();
|
| -
|
| - m_activeListBoxSelectionForegroundColor = Color();
|
| - m_inactiveListBoxSelectionForegroundColor = Color();
|
| - m_activeListBoxSelectionBackgroundColor = Color();
|
| - m_inactiveListBoxSelectionForegroundColor = Color();
|
| -
|
| + m_selectionColorsValid = 0;
|
| Page::scheduleForcedStyleRecalcForAllPages();
|
| }
|
|
|
| @@ -1206,7 +1227,7 @@ void RenderTheme::setCustomFocusRingColor(const Color& c)
|
|
|
| Color RenderTheme::focusRingColor()
|
| {
|
| - return customFocusRingColor().isValid() ? customFocusRingColor() : defaultTheme()->platformFocusRingColor();
|
| + return customFocusRingColor().isValid() ? customFocusRingColor().color() : defaultTheme()->platformFocusRingColor();
|
| }
|
|
|
| String RenderTheme::fileListDefaultLabel(bool multipleFilesAllowed) const
|
|
|