зеркало из https://github.com/mozilla/pjs.git
Introduce 2 CSS values for color property and 1 for text-decoration retrieving the pref for anchors' color, visited anchors' color, and underline or not the anchors; b=57757, r=brade, sr=bzbarsky
This commit is contained in:
Родитель
a38f7cdca4
Коммит
84869edbfb
|
@ -354,13 +354,33 @@ static PRBool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
|
|||
}
|
||||
}
|
||||
else if (eCSSUnit_Integer == unit) {
|
||||
nsILookAndFeel* look = nsnull;
|
||||
if (NS_SUCCEEDED(aPresContext->GetLookAndFeel(&look)) && look) {
|
||||
nsILookAndFeel::nsColorID colorID = (nsILookAndFeel::nsColorID)aValue.GetIntValue();
|
||||
if (NS_SUCCEEDED(look->GetColor(colorID, aResult))) {
|
||||
result = PR_TRUE;
|
||||
PRInt32 intValue = aValue.GetIntValue();
|
||||
if (0 <= intValue) {
|
||||
nsILookAndFeel* look = nsnull;
|
||||
if (NS_SUCCEEDED(aPresContext->GetLookAndFeel(&look)) && look) {
|
||||
nsILookAndFeel::nsColorID colorID = (nsILookAndFeel::nsColorID) intValue;
|
||||
if (NS_SUCCEEDED(look->GetColor(colorID, aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
NS_RELEASE(look);
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (intValue) {
|
||||
case NS_COLOR_MOZ_HYPERLINKTEXT:
|
||||
if (NS_SUCCEEDED(aPresContext->GetDefaultLinkColor(&aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
case NS_COLOR_MOZ_VISITEDHYPERLINKTEXT:
|
||||
if (NS_SUCCEEDED(aPresContext->GetDefaultVisitedLinkColor(&aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NS_NOTREACHED("Should never have an unknown negative colorID.");
|
||||
break;
|
||||
}
|
||||
NS_RELEASE(look);
|
||||
}
|
||||
}
|
||||
else if (eCSSUnit_Inherit == unit) {
|
||||
|
@ -2407,6 +2427,18 @@ nsRuleNode::ComputeTextResetData(nsStyleStruct* aStartData, const nsCSSStruct& a
|
|||
if (eCSSUnit_Enumerated == textData.mDecoration.GetUnit()) {
|
||||
PRInt32 td = textData.mDecoration.GetIntValue();
|
||||
text->mTextDecoration = td;
|
||||
if (td & NS_STYLE_TEXT_DECORATION_PREF_ANCHORS) {
|
||||
PRBool underlineLinks = PR_TRUE;
|
||||
nsresult res = mPresContext->GetCachedBoolPref(kPresContext_UnderlineLinks, underlineLinks);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
if (underlineLinks) {
|
||||
text->mTextDecoration |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
else {
|
||||
text->mTextDecoration &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eCSSUnit_None == textData.mDecoration.GetUnit()) {
|
||||
text->mTextDecoration = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
|
||||
CSS_KEY(-moz-alias, _moz_alias)
|
||||
CSS_KEY(-moz-all, _moz_all)
|
||||
CSS_KEY(-moz-anchor-decoration, _moz_anchor_decoration)
|
||||
CSS_KEY(-moz-arabic-indic, _moz_arabic_indic)
|
||||
CSS_KEY(-moz-bengali, _moz_bengali)
|
||||
CSS_KEY(-moz-bg-inset, _moz_bg_inset)
|
||||
|
@ -106,6 +107,7 @@ CSS_KEY(-moz-gujarati, _moz_gujarati)
|
|||
CSS_KEY(-moz-gurmukhi, _moz_gurmukhi)
|
||||
CSS_KEY(-moz-hangul-consonant, _moz_hangul_consonant)
|
||||
CSS_KEY(-moz-hangul, _moz_hangul)
|
||||
CSS_KEY(-moz-hyperlinktext, _moz_hyperlinktext)
|
||||
CSS_KEY(-moz-info, _moz_info)
|
||||
CSS_KEY(-moz-initial, _moz_initial)
|
||||
CSS_KEY(-moz-inline-block, _moz_inline_block)
|
||||
|
@ -156,6 +158,7 @@ CSS_KEY(-moz-trad-chinese-formal, _moz_trad_chinese_formal)
|
|||
CSS_KEY(-moz-trad-chinese-informal, _moz_trad_chinese_informal)
|
||||
CSS_KEY(-moz-urdu, _moz_urdu)
|
||||
CSS_KEY(-moz-use-text-color, _moz_use_text_color)
|
||||
CSS_KEY(-moz-visitedhyperlinktext, _moz_visitedhyperlinktext)
|
||||
CSS_KEY(-moz-window, _moz_window)
|
||||
CSS_KEY(-moz-workspace, _moz_workspace)
|
||||
CSS_KEY(above, above)
|
||||
|
|
|
@ -320,6 +320,7 @@ const PRInt32 nsCSSProps::kColorKTable[] = {
|
|||
eCSSKeyword__moz_dialog, nsILookAndFeel::eColor__moz_dialog,
|
||||
eCSSKeyword__moz_dialogtext, nsILookAndFeel::eColor__moz_dialogtext,
|
||||
eCSSKeyword__moz_dragtargetzone, nsILookAndFeel::eColor__moz_dragtargetzone,
|
||||
eCSSKeyword__moz_hyperlinktext, NS_COLOR_MOZ_HYPERLINKTEXT,
|
||||
eCSSKeyword__moz_mac_focusring, nsILookAndFeel::eColor__moz_mac_focusring,
|
||||
eCSSKeyword__moz_mac_menuselect, nsILookAndFeel::eColor__moz_mac_menuselect,
|
||||
eCSSKeyword__moz_mac_menushadow, nsILookAndFeel::eColor__moz_mac_menushadow,
|
||||
|
@ -331,6 +332,7 @@ const PRInt32 nsCSSProps::kColorKTable[] = {
|
|||
eCSSKeyword__moz_mac_accentregularshadow, nsILookAndFeel::eColor__moz_mac_accentregularshadow,
|
||||
eCSSKeyword__moz_mac_accentdarkshadow, nsILookAndFeel::eColor__moz_mac_accentdarkshadow,
|
||||
eCSSKeyword__moz_mac_accentdarkestshadow, nsILookAndFeel::eColor__moz_mac_accentdarkestshadow,
|
||||
eCSSKeyword__moz_visitedhyperlinktext, NS_COLOR_MOZ_VISITEDHYPERLINKTEXT,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
@ -700,6 +702,7 @@ const PRInt32 nsCSSProps::kTextDecorationKTable[] = {
|
|||
eCSSKeyword_overline, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
eCSSKeyword_line_through, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
eCSSKeyword_blink, NS_STYLE_TEXT_DECORATION_BLINK,
|
||||
eCSSKeyword__moz_anchor_decoration, NS_STYLE_TEXT_DECORATION_PREF_ANCHORS,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
|
|
@ -60,8 +60,8 @@ a:link img, a:visited img {
|
|||
so we must set explicitly. This isn't good!
|
||||
*/
|
||||
a:link {
|
||||
text-decoration: underline;
|
||||
color: blue;
|
||||
text-decoration: underline -moz-anchor-decoration;
|
||||
color: -moz-hyperlinktext;
|
||||
}
|
||||
|
||||
input, button, select, textarea {
|
||||
|
|
|
@ -60,8 +60,8 @@ a:link img, a:visited img {
|
|||
so we must set explicitly. This isn't good!
|
||||
*/
|
||||
a:link {
|
||||
text-decoration: underline;
|
||||
color: blue;
|
||||
text-decoration: underline -moz-anchor-decoration;
|
||||
color: -moz-hyperlinktext;
|
||||
}
|
||||
|
||||
input, button, select, textarea {
|
||||
|
|
|
@ -225,6 +225,10 @@
|
|||
#define NS_STYLE_BG_REPEAT_Y 0x02
|
||||
#define NS_STYLE_BG_REPEAT_XY 0x03
|
||||
|
||||
// See nsStyleColor
|
||||
#define NS_COLOR_MOZ_HYPERLINKTEXT -1
|
||||
#define NS_COLOR_MOZ_VISITEDHYPERLINKTEXT -2
|
||||
|
||||
// See nsStyleTable
|
||||
#define NS_STYLE_BORDER_COLLAPSE 0
|
||||
#define NS_STYLE_BORDER_SEPARATE 1
|
||||
|
@ -527,6 +531,7 @@
|
|||
#define NS_STYLE_TEXT_DECORATION_LINE_THROUGH NS_FONT_DECORATION_LINE_THROUGH
|
||||
#define NS_STYLE_TEXT_DECORATION_BLINK 0x08
|
||||
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x10
|
||||
#define NS_STYLE_TEXT_DECORATION_PREF_ANCHORS 0x20
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
||||
|
|
|
@ -225,6 +225,10 @@
|
|||
#define NS_STYLE_BG_REPEAT_Y 0x02
|
||||
#define NS_STYLE_BG_REPEAT_XY 0x03
|
||||
|
||||
// See nsStyleColor
|
||||
#define NS_COLOR_MOZ_HYPERLINKTEXT -1
|
||||
#define NS_COLOR_MOZ_VISITEDHYPERLINKTEXT -2
|
||||
|
||||
// See nsStyleTable
|
||||
#define NS_STYLE_BORDER_COLLAPSE 0
|
||||
#define NS_STYLE_BORDER_SEPARATE 1
|
||||
|
@ -527,6 +531,7 @@
|
|||
#define NS_STYLE_TEXT_DECORATION_LINE_THROUGH NS_FONT_DECORATION_LINE_THROUGH
|
||||
#define NS_STYLE_TEXT_DECORATION_BLINK 0x08
|
||||
#define NS_STYLE_TEXT_DECORATION_OVERRIDE_ALL 0x10
|
||||
#define NS_STYLE_TEXT_DECORATION_PREF_ANCHORS 0x20
|
||||
|
||||
// See nsStyleText
|
||||
#define NS_STYLE_TEXT_TRANSFORM_NONE 0
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
|
||||
CSS_KEY(-moz-alias, _moz_alias)
|
||||
CSS_KEY(-moz-all, _moz_all)
|
||||
CSS_KEY(-moz-anchor-decoration, _moz_anchor_decoration)
|
||||
CSS_KEY(-moz-arabic-indic, _moz_arabic_indic)
|
||||
CSS_KEY(-moz-bengali, _moz_bengali)
|
||||
CSS_KEY(-moz-bg-inset, _moz_bg_inset)
|
||||
|
@ -106,6 +107,7 @@ CSS_KEY(-moz-gujarati, _moz_gujarati)
|
|||
CSS_KEY(-moz-gurmukhi, _moz_gurmukhi)
|
||||
CSS_KEY(-moz-hangul-consonant, _moz_hangul_consonant)
|
||||
CSS_KEY(-moz-hangul, _moz_hangul)
|
||||
CSS_KEY(-moz-hyperlinktext, _moz_hyperlinktext)
|
||||
CSS_KEY(-moz-info, _moz_info)
|
||||
CSS_KEY(-moz-initial, _moz_initial)
|
||||
CSS_KEY(-moz-inline-block, _moz_inline_block)
|
||||
|
@ -156,6 +158,7 @@ CSS_KEY(-moz-trad-chinese-formal, _moz_trad_chinese_formal)
|
|||
CSS_KEY(-moz-trad-chinese-informal, _moz_trad_chinese_informal)
|
||||
CSS_KEY(-moz-urdu, _moz_urdu)
|
||||
CSS_KEY(-moz-use-text-color, _moz_use_text_color)
|
||||
CSS_KEY(-moz-visitedhyperlinktext, _moz_visitedhyperlinktext)
|
||||
CSS_KEY(-moz-window, _moz_window)
|
||||
CSS_KEY(-moz-workspace, _moz_workspace)
|
||||
CSS_KEY(above, above)
|
||||
|
|
|
@ -320,6 +320,7 @@ const PRInt32 nsCSSProps::kColorKTable[] = {
|
|||
eCSSKeyword__moz_dialog, nsILookAndFeel::eColor__moz_dialog,
|
||||
eCSSKeyword__moz_dialogtext, nsILookAndFeel::eColor__moz_dialogtext,
|
||||
eCSSKeyword__moz_dragtargetzone, nsILookAndFeel::eColor__moz_dragtargetzone,
|
||||
eCSSKeyword__moz_hyperlinktext, NS_COLOR_MOZ_HYPERLINKTEXT,
|
||||
eCSSKeyword__moz_mac_focusring, nsILookAndFeel::eColor__moz_mac_focusring,
|
||||
eCSSKeyword__moz_mac_menuselect, nsILookAndFeel::eColor__moz_mac_menuselect,
|
||||
eCSSKeyword__moz_mac_menushadow, nsILookAndFeel::eColor__moz_mac_menushadow,
|
||||
|
@ -331,6 +332,7 @@ const PRInt32 nsCSSProps::kColorKTable[] = {
|
|||
eCSSKeyword__moz_mac_accentregularshadow, nsILookAndFeel::eColor__moz_mac_accentregularshadow,
|
||||
eCSSKeyword__moz_mac_accentdarkshadow, nsILookAndFeel::eColor__moz_mac_accentdarkshadow,
|
||||
eCSSKeyword__moz_mac_accentdarkestshadow, nsILookAndFeel::eColor__moz_mac_accentdarkestshadow,
|
||||
eCSSKeyword__moz_visitedhyperlinktext, NS_COLOR_MOZ_VISITEDHYPERLINKTEXT,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
@ -700,6 +702,7 @@ const PRInt32 nsCSSProps::kTextDecorationKTable[] = {
|
|||
eCSSKeyword_overline, NS_STYLE_TEXT_DECORATION_OVERLINE,
|
||||
eCSSKeyword_line_through, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
|
||||
eCSSKeyword_blink, NS_STYLE_TEXT_DECORATION_BLINK,
|
||||
eCSSKeyword__moz_anchor_decoration, NS_STYLE_TEXT_DECORATION_PREF_ANCHORS,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
|
|
@ -354,13 +354,33 @@ static PRBool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
|
|||
}
|
||||
}
|
||||
else if (eCSSUnit_Integer == unit) {
|
||||
nsILookAndFeel* look = nsnull;
|
||||
if (NS_SUCCEEDED(aPresContext->GetLookAndFeel(&look)) && look) {
|
||||
nsILookAndFeel::nsColorID colorID = (nsILookAndFeel::nsColorID)aValue.GetIntValue();
|
||||
if (NS_SUCCEEDED(look->GetColor(colorID, aResult))) {
|
||||
result = PR_TRUE;
|
||||
PRInt32 intValue = aValue.GetIntValue();
|
||||
if (0 <= intValue) {
|
||||
nsILookAndFeel* look = nsnull;
|
||||
if (NS_SUCCEEDED(aPresContext->GetLookAndFeel(&look)) && look) {
|
||||
nsILookAndFeel::nsColorID colorID = (nsILookAndFeel::nsColorID) intValue;
|
||||
if (NS_SUCCEEDED(look->GetColor(colorID, aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
NS_RELEASE(look);
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (intValue) {
|
||||
case NS_COLOR_MOZ_HYPERLINKTEXT:
|
||||
if (NS_SUCCEEDED(aPresContext->GetDefaultLinkColor(&aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
case NS_COLOR_MOZ_VISITEDHYPERLINKTEXT:
|
||||
if (NS_SUCCEEDED(aPresContext->GetDefaultVisitedLinkColor(&aResult))) {
|
||||
result = PR_TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NS_NOTREACHED("Should never have an unknown negative colorID.");
|
||||
break;
|
||||
}
|
||||
NS_RELEASE(look);
|
||||
}
|
||||
}
|
||||
else if (eCSSUnit_Inherit == unit) {
|
||||
|
@ -2407,6 +2427,18 @@ nsRuleNode::ComputeTextResetData(nsStyleStruct* aStartData, const nsCSSStruct& a
|
|||
if (eCSSUnit_Enumerated == textData.mDecoration.GetUnit()) {
|
||||
PRInt32 td = textData.mDecoration.GetIntValue();
|
||||
text->mTextDecoration = td;
|
||||
if (td & NS_STYLE_TEXT_DECORATION_PREF_ANCHORS) {
|
||||
PRBool underlineLinks = PR_TRUE;
|
||||
nsresult res = mPresContext->GetCachedBoolPref(kPresContext_UnderlineLinks, underlineLinks);
|
||||
if (NS_SUCCEEDED(res)) {
|
||||
if (underlineLinks) {
|
||||
text->mTextDecoration |= NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
else {
|
||||
text->mTextDecoration &= ~NS_STYLE_TEXT_DECORATION_UNDERLINE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eCSSUnit_None == textData.mDecoration.GetUnit()) {
|
||||
text->mTextDecoration = NS_STYLE_TEXT_DECORATION_NONE;
|
||||
|
|
|
@ -57,6 +57,10 @@ public:
|
|||
// When modifying this list, also modify nsXPLookAndFeel::sColorPrefs
|
||||
// in widget/src/xpwidgts/nsXPLookAndFeel.cpp.
|
||||
typedef enum {
|
||||
|
||||
// WARNING : NO NEGATIVE VALUE IN THIS ENUMERATION
|
||||
// see patch in bug 57757 for more information
|
||||
|
||||
eColor_WindowBackground,
|
||||
eColor_WindowForeground,
|
||||
eColor_WidgetBackground,
|
||||
|
|
Загрузка…
Ссылка в новой задаче