Issue #1668 - Part 1: Implement support for caret-color property.

This CSS property allows input carets (that blinking input cursor you see in text fields), to be given a custom color. This was implemented in Firefox 53, and it was such a minor feature that no one ever missed it, but I don't see any harm in implementing this.

https://bugzilla.mozilla.org/show_bug.cgi?id=1063162
This commit is contained in:
athenian200 2020-09-29 11:31:46 -05:00 committed by roytam1
commit 33e50615d9
13 changed files with 118 additions and 11 deletions

View file

@ -23,16 +23,29 @@ struct StyleComplexColor
{
nscolor mColor;
uint8_t mForegroundRatio;
// Whether the complex color represents a computed-value time auto
// value. This is only a flag indicating that this value should not
// be interpolatable with other colors, while other fields still
// represents the actual used color of this value.
bool mIsAuto;
static StyleComplexColor FromColor(nscolor aColor) { return {aColor, 0}; }
static StyleComplexColor CurrentColor() { return {NS_RGBA(0, 0, 0, 0), 255}; }
static StyleComplexColor FromColor(nscolor aColor) {
return {aColor, 0, false};
}
static StyleComplexColor CurrentColor() {
return {NS_RGBA(0, 0, 0, 0), 255, false};
}
static StyleComplexColor Auto() {
return {NS_RGBA(0, 0, 0, 0), 255, true};
}
bool IsNumericColor() const { return mForegroundRatio == 0; }
bool IsCurrentColor() const { return mForegroundRatio == 255; }
bool operator==(const StyleComplexColor& aOther) const {
return mForegroundRatio == aOther.mForegroundRatio &&
(IsCurrentColor() || mColor == aOther.mColor);
(IsCurrentColor() || mColor == aOther.mColor) &&
mIsAuto == aOther.mIsAuto;
}
bool operator!=(const StyleComplexColor& aOther) const {
return !(*this == aOther);