summaryrefslogtreecommitdiffstats
path: root/WebCore/css/CSSStyleSelector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/css/CSSStyleSelector.cpp')
-rw-r--r--WebCore/css/CSSStyleSelector.cpp118
1 files changed, 32 insertions, 86 deletions
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 2f7d900..9074476 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -995,9 +995,6 @@ bool CSSStyleSelector::canShareStyleWithElement(Node* n)
if (s->isEnabledFormControl() != m_element->isEnabledFormControl())
return false;
-
- if (s->isDefaultButtonForForm() != m_element->isDefaultButtonForForm())
- return false;
}
if (style->transitions() || style->animations())
@@ -2361,8 +2358,6 @@ bool CSSStyleSelector::SelectorChecker::checkOneSelector(CSSSelector* sel, Eleme
case CSSSelector::PseudoFullPageMedia:
return e && e->document() && e->document()->isMediaDocument();
break;
- case CSSSelector::PseudoDefault:
- return e && e->isDefaultButtonForForm();
case CSSSelector::PseudoDisabled:
if (e && e->isFormControlElement()) {
InputElement* inputElement = toInputElement(e);
@@ -2996,26 +2991,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
return;
case CSSPropertyDisplay:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(display, Display)
-#if ENABLE(WCSS)
- if (primitiveValue) {
- if (primitiveValue->getIdent() == CSSValueWapMarquee) {
- // Initialize Wap Marquee style
- m_style->setOverflowX(OMARQUEE);
- m_style->setOverflowY(OMARQUEE);
- m_style->setWhiteSpace(NOWRAP);
- m_style->setMarqueeDirection(MLEFT);
- m_style->setMarqueeSpeed(85); // Normal speed
- m_style->setMarqueeLoopCount(1);
- m_style->setMarqueeBehavior(MSCROLL);
-
- if (m_parentStyle)
- m_style->setDisplay(m_parentStyle->display());
- else
- m_style->setDisplay(*primitiveValue);
- } else
- m_style->setDisplay(*primitiveValue);
- }
-#endif
return;
case CSSPropertyEmptyCells:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(emptyCells, EmptyCells)
@@ -3779,6 +3754,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
{
FontDescription fontDescription = m_style->fontDescription();
fontDescription.setKeywordSize(0);
+ bool familyIsFixed = fontDescription.genericFamily() == FontDescription::MonospaceFamily;
float oldSize = 0;
float size = 0;
@@ -3793,7 +3769,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
if (m_parentNode)
fontDescription.setKeywordSize(m_parentStyle->fontDescription().keywordSize());
} else if (isInitial) {
- size = fontSizeForKeyword(CSSValueMedium, m_style->htmlHacks(), fontDescription.useFixedDefaultSize());
+ size = fontSizeForKeyword(CSSValueMedium, m_style->htmlHacks(), familyIsFixed);
fontDescription.setKeywordSize(CSSValueMedium - CSSValueXxSmall + 1);
} else if (primitiveValue->getIdent()) {
// Keywords are being used.
@@ -3806,7 +3782,7 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
case CSSValueXLarge:
case CSSValueXxLarge:
case CSSValueWebkitXxxLarge:
- size = fontSizeForKeyword(primitiveValue->getIdent(), m_style->htmlHacks(), fontDescription.useFixedDefaultSize());
+ size = fontSizeForKeyword(primitiveValue->getIdent(), m_style->htmlHacks(), familyIsFixed);
fontDescription.setKeywordSize(primitiveValue->getIdent() - CSSValueXxSmall + 1);
break;
case CSSValueLarger:
@@ -4049,12 +4025,13 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
if (m_style->setFontDescription(fontDescription))
m_fontDirty = true;
return;
- } else if (isInitial) {
+ }
+ else if (isInitial) {
FontDescription initialDesc = FontDescription();
FontDescription fontDescription = m_style->fontDescription();
// We need to adjust the size to account for the generic family change from monospace
// to non-monospace.
- if (fontDescription.keywordSize() && fontDescription.useFixedDefaultSize())
+ if (fontDescription.keywordSize() && fontDescription.genericFamily() == FontDescription::MonospaceFamily)
setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), false));
fontDescription.setGenericFamily(initialDesc.genericFamily());
if (!initialDesc.firstFamily().familyIsEmpty())
@@ -4064,23 +4041,21 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
return;
}
- if (!value->isValueList())
- return;
+ if (!value->isValueList()) return;
FontDescription fontDescription = m_style->fontDescription();
- CSSValueList* list = static_cast<CSSValueList*>(value);
+ CSSValueList *list = static_cast<CSSValueList*>(value);
int len = list->length();
FontFamily& firstFamily = fontDescription.firstFamily();
- FontFamily* currFamily = 0;
+ FontFamily *currFamily = 0;
// Before mapping in a new font-family property, we should reset the generic family.
- bool oldFamilyUsedFixedDefaultSize = fontDescription.useFixedDefaultSize();
+ bool oldFamilyIsMonospace = fontDescription.genericFamily() == FontDescription::MonospaceFamily;
fontDescription.setGenericFamily(FontDescription::NoFamily);
for (int i = 0; i < len; i++) {
- CSSValue* item = list->itemWithoutBoundsCheck(i);
- if (!item->isPrimitiveValue())
- continue;
- CSSPrimitiveValue* val = static_cast<CSSPrimitiveValue*>(item);
+ CSSValue *item = list->itemWithoutBoundsCheck(i);
+ if (!item->isPrimitiveValue()) continue;
+ CSSPrimitiveValue *val = static_cast<CSSPrimitiveValue*>(item);
AtomicString face;
Settings* settings = m_checker.m_document->settings();
if (val->primitiveType() == CSSPrimitiveValue::CSS_STRING)
@@ -4112,32 +4087,28 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
break;
}
}
-
+
if (!face.isEmpty()) {
if (!currFamily) {
// Filling in the first family.
firstFamily.setFamily(face);
- firstFamily.appendFamily(0); // Remove any inherited family-fallback list.
currFamily = &firstFamily;
- } else {
+ }
+ else {
RefPtr<SharedFontFamily> newFamily = SharedFontFamily::create();
newFamily->setFamily(face);
currFamily->appendFamily(newFamily);
currFamily = newFamily.get();
}
+
+ if (fontDescription.keywordSize() && (fontDescription.genericFamily() == FontDescription::MonospaceFamily) != oldFamilyIsMonospace)
+ setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), !oldFamilyIsMonospace));
+
+ if (m_style->setFontDescription(fontDescription))
+ m_fontDirty = true;
}
}
-
- // We can't call useFixedDefaultSize() until all new font families have been added
- // If currFamily is non-zero then we set at least one family on this description.
- if (currFamily) {
- if (fontDescription.keywordSize() && fontDescription.useFixedDefaultSize() != oldFamilyUsedFixedDefaultSize)
- setFontSize(fontDescription, fontSizeForKeyword(CSSValueXxSmall + fontDescription.keywordSize() - 1, m_style->htmlHacks(), !oldFamilyUsedFixedDefaultSize));
-
- if (m_style->setFontDescription(fontDescription))
- m_fontDirty = true;
- }
- return;
+ return;
}
case CSSPropertyTextDecoration: {
// list of ident
@@ -4771,9 +4742,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
m_style->setMarqueeLoopCount(m_parentStyle->marqueeLoopCount());
m_style->setMarqueeBehavior(m_parentStyle->marqueeBehavior());
return;
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeLoop:
-#endif
case CSSPropertyWebkitMarqueeRepetition: {
HANDLE_INHERIT_AND_INITIAL(marqueeLoopCount, MarqueeLoopCount)
if (!primitiveValue)
@@ -4784,9 +4752,6 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
m_style->setMarqueeLoopCount(primitiveValue->getIntValue());
return;
}
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeSpeed:
-#endif
case CSSPropertyWebkitMarqueeSpeed: {
HANDLE_INHERIT_AND_INITIAL(marqueeSpeed, MarqueeSpeed)
if (!primitiveValue)
@@ -4837,30 +4802,9 @@ void CSSStyleSelector::applyProperty(int id, CSSValue *value)
}
return;
}
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeStyle:
-#endif
case CSSPropertyWebkitMarqueeStyle:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeBehavior, MarqueeBehavior)
return;
-#if ENABLE(WCSS)
- case CSSPropertyWapMarqueeDir:
- HANDLE_INHERIT_AND_INITIAL(marqueeDirection, MarqueeDirection)
- if (primitiveValue && primitiveValue->getIdent()) {
- switch (primitiveValue->getIdent()) {
- case CSSValueLtr:
- m_style->setMarqueeDirection(MRIGHT);
- break;
- case CSSValueRtl:
- m_style->setMarqueeDirection(MLEFT);
- break;
- default:
- m_style->setMarqueeDirection(*primitiveValue);
- break;
- }
- }
- return;
-#endif
case CSSPropertyWebkitMarqueeDirection:
HANDLE_INHERIT_AND_INITIAL_AND_PRIMITIVE(marqueeDirection, MarqueeDirection)
return;
@@ -5643,7 +5587,8 @@ void CSSStyleSelector::checkForGenericFamilyChange(RenderStyle* style, RenderSty
return;
const FontDescription& parentFont = parentStyle->fontDescription();
- if (childFont.useFixedDefaultSize() == parentFont.useFixedDefaultSize())
+
+ if (childFont.genericFamily() == parentFont.genericFamily())
return;
// For now, lump all families but monospace together.
@@ -5656,16 +5601,17 @@ void CSSStyleSelector::checkForGenericFamilyChange(RenderStyle* style, RenderSty
// If the font uses a keyword size, then we refetch from the table rather than
// multiplying by our scale factor.
float size;
- if (childFont.keywordSize())
- size = fontSizeForKeyword(CSSValueXxSmall + childFont.keywordSize() - 1, style->htmlHacks(), childFont.useFixedDefaultSize());
- else {
+ if (childFont.keywordSize()) {
+ size = fontSizeForKeyword(CSSValueXxSmall + childFont.keywordSize() - 1, style->htmlHacks(),
+ childFont.genericFamily() == FontDescription::MonospaceFamily);
+ } else {
Settings* settings = m_checker.m_document->settings();
float fixedScaleFactor = settings
? static_cast<float>(settings->defaultFixedFontSize()) / settings->defaultFontSize()
: 1;
- size = parentFont.useFixedDefaultSize() ?
- childFont.specifiedSize() / fixedScaleFactor :
- childFont.specifiedSize() * fixedScaleFactor;
+ size = (parentFont.genericFamily() == FontDescription::MonospaceFamily) ?
+ childFont.specifiedSize()/fixedScaleFactor :
+ childFont.specifiedSize()*fixedScaleFactor;
}
FontDescription newFontDescription(childFont);