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/nsRuleNode.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/nsRuleNode.cpp')
-rw-r--r-- | layout/style/nsRuleNode.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp index 66345390e..1136edee2 100644 --- a/layout/style/nsRuleNode.cpp +++ b/layout/style/nsRuleNode.cpp @@ -5142,6 +5142,13 @@ nsRuleNode::ComputeUserInterfaceData(void* aStartStruct, { COMPUTE_START_INHERITED(UserInterface, ui, parentUI) + auto setComplexColor = [&](const nsCSSValue* aValue, + StyleComplexColor nsStyleUserInterface::* aField) { + SetComplexColor<eUnsetInherit>(*aValue, parentUI->*aField, + StyleComplexColor::Auto(), + mPresContext, ui->*aField, conditions); + }; + // cursor: enum, url, inherit const nsCSSValue* cursorValue = aRuleData->ValueForCursor(); nsCSSUnit cursorUnit = cursorValue->GetUnit(); @@ -5214,12 +5221,8 @@ nsRuleNode::ComputeUserInterfaceData(void* aStartStruct, NS_STYLE_POINTER_EVENTS_AUTO); // caret-color: auto, color, inherit - const nsCSSValue* caretColorValue = aRuleData->ValueForCaretColor(); - SetComplexColor<eUnsetInherit>(*caretColorValue, - parentUI->mCaretColor, - StyleComplexColor::Auto(), - mPresContext, - ui->mCaretColor, conditions); + setComplexColor(aRuleData->ValueForCaretColor(), + &nsStyleUserInterface::mCaretColor); COMPUTE_END_INHERITED(UserInterface, ui) } |