diff options
author | athenian200 <athenian200@outlook.com> | 2020-10-18 10:12:53 -0500 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-10-24 10:37:01 +0000 |
commit | 67a7e4eabd9b91436cc658431ea1bbd28e480f5b (patch) | |
tree | 26e8869a76559dc8a6d9bec8fa9477019318ff6b /layout/style/nsStyleContext.cpp | |
parent | c1ef9546792e8d5881c9516d8e51de3cd6999f79 (diff) | |
download | UXP-67a7e4eabd9b91436cc658431ea1bbd28e480f5b.tar UXP-67a7e4eabd9b91436cc658431ea1bbd28e480f5b.tar.gz UXP-67a7e4eabd9b91436cc658431ea1bbd28e480f5b.tar.lz UXP-67a7e4eabd9b91436cc658431ea1bbd28e480f5b.tar.xz UXP-67a7e4eabd9b91436cc658431ea1bbd28e480f5b.zip |
Issue #1668 - Part 2: Visited color and auto support for caret-color property.
Mozilla's original implementation of this failed a couple of tests, but this seems to solve all the problems. Basically, the caret-color wasn't able to be set differently based on whether a link was visited, and the auto value implementation was incomplete. The only test we fail now is the one where you have grey text on a grey background and the caret is supposed to be visible, but I think that may have been removed from the spec. Even if it wasn't, no other browser supports it anyway.
Diffstat (limited to 'layout/style/nsStyleContext.cpp')
-rw-r--r-- | layout/style/nsStyleContext.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/layout/style/nsStyleContext.cpp b/layout/style/nsStyleContext.cpp index 4b1a14897..38b422bd7 100644 --- a/layout/style/nsStyleContext.cpp +++ b/layout/style/nsStyleContext.cpp @@ -1255,6 +1255,17 @@ nsStyleContext::CalcStyleDifferenceInternal(StyleContextLike* aNewContext, } } + // NB: Calling Peek on |this|, not |thisVis| (see above). + if (!change && PeekStyleUserInterface()) { + const nsStyleUserInterface *thisVisUserInterface = thisVis->StyleUserInterface(); + const nsStyleUserInterface *otherVisUserInterface = otherVis->StyleUserInterface(); + if (thisVisUserInterface->mCaretColor != + otherVisUserInterface->mCaretColor) { + change = true; + } + } + + if (change) { hint |= nsChangeHint_RepaintFrame; } @@ -1487,6 +1498,9 @@ ExtractColor(nsCSSPropertyID aProperty, case StyleAnimationValue::eUnit_ComplexColor: return Some(aStyleContext->StyleColor()-> CalcComplexColor(val.GetStyleComplexColorValue())); + case StyleAnimationValue::eUnit_Auto: + return Some(aStyleContext->StyleColor()-> + CalcComplexColor(StyleComplexColor::Auto())); default: return Nothing(); } @@ -1508,7 +1522,8 @@ static const ColorIndexSet gVisitedIndices[2] = { { 0, 0 }, { 1, 0 } }; nscolor nsStyleContext::GetVisitedDependentColor(nsCSSPropertyID aProperty) { - NS_ASSERTION(aProperty == eCSSProperty_color || + NS_ASSERTION(aProperty == eCSSProperty_caret_color || + aProperty == eCSSProperty_color || aProperty == eCSSProperty_background_color || aProperty == eCSSProperty_border_top_color || aProperty == eCSSProperty_border_right_color || |