adding behavior property to CSS. r=brendan

This commit is contained in:
hyatt%netscape.com 2000-01-11 03:40:41 +00:00
Родитель d6f72b0e78
Коммит 3d186ddce8
34 изменённых файлов: 365 добавлений и 129 удалений

Просмотреть файл

@ -1496,16 +1496,33 @@ void StyleUserInterfaceImpl::ResetFrom(const nsStyleUserInterface* aParent, nsIP
void StyleUserInterfaceImpl::SetFrom(const nsStyleUserInterface& aSource)
{
nsCRT::memcpy((nsStyleUserInterface*)this, &aSource, sizeof(nsStyleUserInterface));
mUserInput = aSource.mUserInput;
mUserModify = aSource.mUserModify;
mUserFocus = aSource.mUserFocus;
mUserSelect = aSource.mUserSelect;
mKeyEquivalent = aSource.mKeyEquivalent;
mResizer = aSource.mResizer;
mBehavior = aSource.mBehavior;
}
void StyleUserInterfaceImpl::CopyTo(nsStyleUserInterface& aDest) const
{
nsCRT::memcpy(&aDest, (const nsStyleUserInterface*)this, sizeof(nsStyleUserInterface));
aDest.mUserInput = mUserInput;
aDest.mUserModify = mUserModify;
aDest.mUserFocus = mUserFocus;
aDest.mUserSelect = mUserSelect;
aDest.mKeyEquivalent = mKeyEquivalent;
aDest.mResizer = mResizer;
aDest.mBehavior = mBehavior;
}
PRInt32 StyleUserInterfaceImpl::CalcDifference(const StyleUserInterfaceImpl& aOther) const
{
if (mBehavior != aOther.mBehavior)
return NS_STYLE_HINT_FRAMECHANGE;
if ((mUserInput == aOther.mUserInput) &&
(mResizer == aOther.mResizer)) {
if ((mUserModify == aOther.mUserModify) &&

Просмотреть файл

@ -796,7 +796,8 @@ nsCSSUserInterface::nsCSSUserInterface(const nsCSSUserInterface& aCopy)
mUserSelect(aCopy.mUserSelect),
mKeyEquivalent(nsnull),
mUserFocus(aCopy.mUserFocus),
mResizer(aCopy.mResizer)
mResizer(aCopy.mResizer),
mBehavior(aCopy.mBehavior)
{
CSS_IF_COPY(mKeyEquivalent, nsCSSValueList);
}
@ -827,6 +828,7 @@ void nsCSSUserInterface::List(FILE* out, PRInt32 aIndent) const
}
mUserFocus.AppendToString(buffer, eCSSProperty_user_focus);
mResizer.AppendToString(buffer, eCSSProperty_resizer);
mBehavior.AppendToString(buffer, eCSSProperty_behavior);
fputs(buffer, out);
}
@ -1566,6 +1568,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
CSS_ENSURE(UserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: mUserInterface->mUserInput = aValue; break;
@ -1579,6 +1582,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
break;
case eCSSProperty_user_focus: mUserInterface->mUserFocus = aValue; break;
case eCSSProperty_resizer: mUserInterface->mResizer = aValue; break;
case eCSSProperty_behavior: mUserInterface->mBehavior = aValue; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2269,6 +2273,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
case eCSSProperty_user_select:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
CSS_ENSURE_IMPORTANT(UserInterface) {
switch (aProperty) {
@ -2277,6 +2282,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
CSS_CASE_IMPORTANT(eCSSProperty_user_select, mUserInterface->mUserSelect);
CSS_CASE_IMPORTANT(eCSSProperty_user_focus, mUserInterface->mUserFocus);
CSS_CASE_IMPORTANT(eCSSProperty_resizer, mUserInterface->mResizer);
CSS_CASE_IMPORTANT(eCSSProperty_behavior, mUserInterface->mBehavior);
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2954,6 +2960,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: aValue = mUserInterface->mUserInput; break;
@ -2966,6 +2973,8 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
break;
case eCSSProperty_user_focus: aValue = mUserInterface->mUserFocus; break;
case eCSSProperty_resizer: aValue = mUserInterface->mResizer; break;
case eCSSProperty_behavior: aValue = mUserInterface->mBehavior; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}

Просмотреть файл

@ -2838,6 +2838,8 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode,
case eCSSProperty_background_y_position:
return ParseVariant(aErrorCode, aValue, VARIANT_HKLP,
kBackgroundXYPositionKTable);
case eCSSProperty_behavior:
return ParseVariant(aErrorCode, aValue, VARIANT_HUO, nsnull);
case eCSSProperty_border_collapse:
return ParseVariant(aErrorCode, aValue, VARIANT_HK,
nsCSSProps::kBorderCollapseKTable);

Просмотреть файл

@ -56,6 +56,7 @@ CSS_PROP(background_position, VISUAL)
CSS_PROP(background_repeat, VISUAL)
CSS_PROP(background_x_position, VISUAL)
CSS_PROP(background_y_position, VISUAL)
CSS_PROP(behavior, REFLOW)
CSS_PROP(border, REFLOW)
CSS_PROP(border_bottom, REFLOW)
CSS_PROP(border_bottom_color, VISUAL)

Просмотреть файл

@ -796,7 +796,8 @@ nsCSSUserInterface::nsCSSUserInterface(const nsCSSUserInterface& aCopy)
mUserSelect(aCopy.mUserSelect),
mKeyEquivalent(nsnull),
mUserFocus(aCopy.mUserFocus),
mResizer(aCopy.mResizer)
mResizer(aCopy.mResizer),
mBehavior(aCopy.mBehavior)
{
CSS_IF_COPY(mKeyEquivalent, nsCSSValueList);
}
@ -827,6 +828,7 @@ void nsCSSUserInterface::List(FILE* out, PRInt32 aIndent) const
}
mUserFocus.AppendToString(buffer, eCSSProperty_user_focus);
mResizer.AppendToString(buffer, eCSSProperty_resizer);
mBehavior.AppendToString(buffer, eCSSProperty_behavior);
fputs(buffer, out);
}
@ -1566,6 +1568,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
CSS_ENSURE(UserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: mUserInterface->mUserInput = aValue; break;
@ -1579,6 +1582,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
break;
case eCSSProperty_user_focus: mUserInterface->mUserFocus = aValue; break;
case eCSSProperty_resizer: mUserInterface->mResizer = aValue; break;
case eCSSProperty_behavior: mUserInterface->mBehavior = aValue; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2269,6 +2273,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
case eCSSProperty_user_select:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
CSS_ENSURE_IMPORTANT(UserInterface) {
switch (aProperty) {
@ -2277,6 +2282,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
CSS_CASE_IMPORTANT(eCSSProperty_user_select, mUserInterface->mUserSelect);
CSS_CASE_IMPORTANT(eCSSProperty_user_focus, mUserInterface->mUserFocus);
CSS_CASE_IMPORTANT(eCSSProperty_resizer, mUserInterface->mResizer);
CSS_CASE_IMPORTANT(eCSSProperty_behavior, mUserInterface->mBehavior);
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2954,6 +2960,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: aValue = mUserInterface->mUserInput; break;
@ -2966,6 +2973,8 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
break;
case eCSSProperty_user_focus: aValue = mUserInterface->mUserFocus; break;
case eCSSProperty_resizer: aValue = mUserInterface->mResizer; break;
case eCSSProperty_behavior: aValue = mUserInterface->mBehavior; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}

Просмотреть файл

@ -2523,6 +2523,11 @@ MapDeclarationUIInto(nsICSSDeclaration* aDeclaration,
ui->mUserSelect = parentUI->mUserSelect;
}
// behavior: url, none
if (eCSSUnit_URL == ourUI->mBehavior.GetUnit()) {
ourUI->mBehavior.GetStringValue(ui->mBehavior);
}
// key-equivalent: none, enum XXX, inherit
nsCSSValueList* keyEquiv = ourUI->mKeyEquivalent;
if (keyEquiv) {

Просмотреть файл

@ -296,6 +296,18 @@ nsDOMCSSDeclaration::SetBackgroundRepeat(const nsString& aBackgroundRepeat)
return SetProperty("background-repeat", aBackgroundRepeat, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBehavior(nsString& aBehavior)
{
return GetPropertyValue("behavior", aBehavior);
}
NS_IMETHODIMP
nsDOMCSSDeclaration::SetBehavior(const nsString& aBehavior)
{
return SetProperty("behavior", aBehavior, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBorder(nsString& aBorder)
{

Просмотреть файл

@ -349,6 +349,7 @@ struct nsCSSUserInterface : public nsCSSStruct { // NEW
nsCSSValueList* mKeyEquivalent;
nsCSSValue mUserFocus;
nsCSSValue mResizer;
nsCSSValue mBehavior;
};
struct nsCSSAural : public nsCSSStruct { // NEW

Просмотреть файл

@ -56,6 +56,7 @@ CSS_PROP(background_position, VISUAL)
CSS_PROP(background_repeat, VISUAL)
CSS_PROP(background_x_position, VISUAL)
CSS_PROP(background_y_position, VISUAL)
CSS_PROP(behavior, REFLOW)
CSS_PROP(border, REFLOW)
CSS_PROP(border_bottom, REFLOW)
CSS_PROP(border_bottom_color, VISUAL)

Просмотреть файл

@ -720,6 +720,9 @@ static const PRInt32 kBackgroundYPositionKTable[] = {
case eCSSProperty_background_y_position:
return SearchKeywordTable(aValue, kBackgroundYPositionKTable);
case eCSSProperty_behavior:
break;
case eCSSProperty_border:
break;

Просмотреть файл

@ -59,6 +59,9 @@ public:
NS_IMETHOD GetBackgroundRepeat(nsString& aBackgroundRepeat)=0;
NS_IMETHOD SetBackgroundRepeat(const nsString& aBackgroundRepeat)=0;
NS_IMETHOD GetBehavior(nsString& aBehavior)=0;
NS_IMETHOD SetBehavior(const nsString& aBehavior)=0;
NS_IMETHOD GetBorder(nsString& aBorder)=0;
NS_IMETHOD SetBorder(const nsString& aBorder)=0;
@ -424,6 +427,8 @@ public:
NS_IMETHOD SetBackgroundPosition(const nsString& aBackgroundPosition); \
NS_IMETHOD GetBackgroundRepeat(nsString& aBackgroundRepeat); \
NS_IMETHOD SetBackgroundRepeat(const nsString& aBackgroundRepeat); \
NS_IMETHOD GetBehavior(nsString& aBehavior); \
NS_IMETHOD SetBehavior(const nsString& aBehavior); \
NS_IMETHOD GetBorder(nsString& aBorder); \
NS_IMETHOD SetBorder(const nsString& aBorder); \
NS_IMETHOD GetBorderCollapse(nsString& aBorderCollapse); \
@ -674,6 +679,8 @@ public:
NS_IMETHOD SetBackgroundPosition(const nsString& aBackgroundPosition) { return _to SetBackgroundPosition(aBackgroundPosition); } \
NS_IMETHOD GetBackgroundRepeat(nsString& aBackgroundRepeat) { return _to GetBackgroundRepeat(aBackgroundRepeat); } \
NS_IMETHOD SetBackgroundRepeat(const nsString& aBackgroundRepeat) { return _to SetBackgroundRepeat(aBackgroundRepeat); } \
NS_IMETHOD GetBehavior(nsString& aBehavior) { return _to GetBehavior(aBehavior); } \
NS_IMETHOD SetBehavior(const nsString& aBehavior) { return _to SetBehavior(aBehavior); } \
NS_IMETHOD GetBorder(nsString& aBorder) { return _to GetBorder(aBorder); } \
NS_IMETHOD SetBorder(const nsString& aBorder) { return _to SetBorder(aBorder); } \
NS_IMETHOD GetBorderCollapse(nsString& aBorderCollapse) { return _to GetBorderCollapse(aBorderCollapse); } \

Просмотреть файл

@ -9,7 +9,8 @@
attribute wstring backgroundColor;
attribute wstring backgroundImage;
attribute wstring backgroundPosition;
attribute wstring backgroundRepeat;
attribute wstring backgroundRepeat;
attribute wstring behavior;
attribute wstring border;
attribute wstring borderCollapse;
attribute wstring borderColor;

Просмотреть файл

@ -56,7 +56,8 @@ enum nsDOMProp {
NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDCOLOR,
NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDIMAGE,
NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDPOSITION,
NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT,
NS_DOM_PROP_CSS2PROPERTIES_BACKGROUNDREPEAT,
NS_DOM_PROP_CSS2PROPERTIES_BEHAVIOR,
NS_DOM_PROP_CSS2PROPERTIES_BORDER,
NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOM,
NS_DOM_PROP_CSS2PROPERTIES_BORDERBOTTOMCOLOR,

Просмотреть файл

@ -56,6 +56,7 @@
"css2properties.backgroundimage", \
"css2properties.backgroundposition", \
"css2properties.backgroundrepeat", \
"css2properties.behavior", \
"css2properties.border", \
"css2properties.borderbottom", \
"css2properties.borderbottomcolor", \

Просмотреть файл

@ -53,122 +53,123 @@ enum CSS2Properties_slots {
CSS2PROPERTIES_BACKGROUNDIMAGE = -5,
CSS2PROPERTIES_BACKGROUNDPOSITION = -6,
CSS2PROPERTIES_BACKGROUNDREPEAT = -7,
CSS2PROPERTIES_BORDER = -8,
CSS2PROPERTIES_BORDERCOLLAPSE = -9,
CSS2PROPERTIES_BORDERCOLOR = -10,
CSS2PROPERTIES_BORDERSPACING = -11,
CSS2PROPERTIES_BORDERSTYLE = -12,
CSS2PROPERTIES_BORDERTOP = -13,
CSS2PROPERTIES_BORDERRIGHT = -14,
CSS2PROPERTIES_BORDERBOTTOM = -15,
CSS2PROPERTIES_BORDERLEFT = -16,
CSS2PROPERTIES_BORDERTOPCOLOR = -17,
CSS2PROPERTIES_BORDERRIGHTCOLOR = -18,
CSS2PROPERTIES_BORDERBOTTOMCOLOR = -19,
CSS2PROPERTIES_BORDERLEFTCOLOR = -20,
CSS2PROPERTIES_BORDERTOPSTYLE = -21,
CSS2PROPERTIES_BORDERRIGHTSTYLE = -22,
CSS2PROPERTIES_BORDERBOTTOMSTYLE = -23,
CSS2PROPERTIES_BORDERLEFTSTYLE = -24,
CSS2PROPERTIES_BORDERTOPWIDTH = -25,
CSS2PROPERTIES_BORDERRIGHTWIDTH = -26,
CSS2PROPERTIES_BORDERBOTTOMWIDTH = -27,
CSS2PROPERTIES_BORDERLEFTWIDTH = -28,
CSS2PROPERTIES_BORDERWIDTH = -29,
CSS2PROPERTIES_BOTTOM = -30,
CSS2PROPERTIES_CAPTIONSIDE = -31,
CSS2PROPERTIES_CLEAR = -32,
CSS2PROPERTIES_CLIP = -33,
CSS2PROPERTIES_COLOR = -34,
CSS2PROPERTIES_CONTENT = -35,
CSS2PROPERTIES_COUNTERINCREMENT = -36,
CSS2PROPERTIES_COUNTERRESET = -37,
CSS2PROPERTIES_CUE = -38,
CSS2PROPERTIES_CUEAFTER = -39,
CSS2PROPERTIES_CUEBEFORE = -40,
CSS2PROPERTIES_CURSOR = -41,
CSS2PROPERTIES_DIRECTION = -42,
CSS2PROPERTIES_DISPLAY = -43,
CSS2PROPERTIES_ELEVATION = -44,
CSS2PROPERTIES_EMPTYCELLS = -45,
CSS2PROPERTIES_CSSFLOAT = -46,
CSS2PROPERTIES_FONT = -47,
CSS2PROPERTIES_FONTFAMILY = -48,
CSS2PROPERTIES_FONTSIZE = -49,
CSS2PROPERTIES_FONTSIZEADJUST = -50,
CSS2PROPERTIES_FONTSTRETCH = -51,
CSS2PROPERTIES_FONTSTYLE = -52,
CSS2PROPERTIES_FONTVARIANT = -53,
CSS2PROPERTIES_FONTWEIGHT = -54,
CSS2PROPERTIES_HEIGHT = -55,
CSS2PROPERTIES_LEFT = -56,
CSS2PROPERTIES_LETTERSPACING = -57,
CSS2PROPERTIES_LINEHEIGHT = -58,
CSS2PROPERTIES_LISTSTYLE = -59,
CSS2PROPERTIES_LISTSTYLEIMAGE = -60,
CSS2PROPERTIES_LISTSTYLEPOSITION = -61,
CSS2PROPERTIES_LISTSTYLETYPE = -62,
CSS2PROPERTIES_MARGIN = -63,
CSS2PROPERTIES_MARGINTOP = -64,
CSS2PROPERTIES_MARGINRIGHT = -65,
CSS2PROPERTIES_MARGINBOTTOM = -66,
CSS2PROPERTIES_MARGINLEFT = -67,
CSS2PROPERTIES_MARKEROFFSET = -68,
CSS2PROPERTIES_MARKS = -69,
CSS2PROPERTIES_MAXHEIGHT = -70,
CSS2PROPERTIES_MAXWIDTH = -71,
CSS2PROPERTIES_MINHEIGHT = -72,
CSS2PROPERTIES_MINWIDTH = -73,
CSS2PROPERTIES_ORPHANS = -74,
CSS2PROPERTIES_OUTLINE = -75,
CSS2PROPERTIES_OUTLINECOLOR = -76,
CSS2PROPERTIES_OUTLINESTYLE = -77,
CSS2PROPERTIES_OUTLINEWIDTH = -78,
CSS2PROPERTIES_OVERFLOW = -79,
CSS2PROPERTIES_PADDING = -80,
CSS2PROPERTIES_PADDINGTOP = -81,
CSS2PROPERTIES_PADDINGRIGHT = -82,
CSS2PROPERTIES_PADDINGBOTTOM = -83,
CSS2PROPERTIES_PADDINGLEFT = -84,
CSS2PROPERTIES_PAGE = -85,
CSS2PROPERTIES_PAGEBREAKAFTER = -86,
CSS2PROPERTIES_PAGEBREAKBEFORE = -87,
CSS2PROPERTIES_PAGEBREAKINSIDE = -88,
CSS2PROPERTIES_PAUSE = -89,
CSS2PROPERTIES_PAUSEAFTER = -90,
CSS2PROPERTIES_PAUSEBEFORE = -91,
CSS2PROPERTIES_PITCH = -92,
CSS2PROPERTIES_PITCHRANGE = -93,
CSS2PROPERTIES_PLAYDURING = -94,
CSS2PROPERTIES_POSITION = -95,
CSS2PROPERTIES_QUOTES = -96,
CSS2PROPERTIES_RICHNESS = -97,
CSS2PROPERTIES_RIGHT = -98,
CSS2PROPERTIES_SIZE = -99,
CSS2PROPERTIES_SPEAK = -100,
CSS2PROPERTIES_SPEAKHEADER = -101,
CSS2PROPERTIES_SPEAKNUMERAL = -102,
CSS2PROPERTIES_SPEAKPUNCTUATION = -103,
CSS2PROPERTIES_SPEECHRATE = -104,
CSS2PROPERTIES_STRESS = -105,
CSS2PROPERTIES_TABLELAYOUT = -106,
CSS2PROPERTIES_TEXTALIGN = -107,
CSS2PROPERTIES_TEXTDECORATION = -108,
CSS2PROPERTIES_TEXTINDENT = -109,
CSS2PROPERTIES_TEXTSHADOW = -110,
CSS2PROPERTIES_TEXTTRANSFORM = -111,
CSS2PROPERTIES_TOP = -112,
CSS2PROPERTIES_UNICODEBIDI = -113,
CSS2PROPERTIES_VERTICALALIGN = -114,
CSS2PROPERTIES_VISIBILITY = -115,
CSS2PROPERTIES_VOICEFAMILY = -116,
CSS2PROPERTIES_VOLUME = -117,
CSS2PROPERTIES_WHITESPACE = -118,
CSS2PROPERTIES_WIDOWS = -119,
CSS2PROPERTIES_WIDTH = -120,
CSS2PROPERTIES_WORDSPACING = -121,
CSS2PROPERTIES_ZINDEX = -122,
CSS2PROPERTIES_OPACITY = -123
CSS2PROPERTIES_BEHAVIOR = -8,
CSS2PROPERTIES_BORDER = -9,
CSS2PROPERTIES_BORDERCOLLAPSE = -10,
CSS2PROPERTIES_BORDERCOLOR = -11,
CSS2PROPERTIES_BORDERSPACING = -12,
CSS2PROPERTIES_BORDERSTYLE = -13,
CSS2PROPERTIES_BORDERTOP = -14,
CSS2PROPERTIES_BORDERRIGHT = -15,
CSS2PROPERTIES_BORDERBOTTOM = -16,
CSS2PROPERTIES_BORDERLEFT = -17,
CSS2PROPERTIES_BORDERTOPCOLOR = -18,
CSS2PROPERTIES_BORDERRIGHTCOLOR = -19,
CSS2PROPERTIES_BORDERBOTTOMCOLOR = -20,
CSS2PROPERTIES_BORDERLEFTCOLOR = -21,
CSS2PROPERTIES_BORDERTOPSTYLE = -22,
CSS2PROPERTIES_BORDERRIGHTSTYLE = -23,
CSS2PROPERTIES_BORDERBOTTOMSTYLE = -24,
CSS2PROPERTIES_BORDERLEFTSTYLE = -25,
CSS2PROPERTIES_BORDERTOPWIDTH = -26,
CSS2PROPERTIES_BORDERRIGHTWIDTH = -27,
CSS2PROPERTIES_BORDERBOTTOMWIDTH = -28,
CSS2PROPERTIES_BORDERLEFTWIDTH = -29,
CSS2PROPERTIES_BORDERWIDTH = -30,
CSS2PROPERTIES_BOTTOM = -31,
CSS2PROPERTIES_CAPTIONSIDE = -32,
CSS2PROPERTIES_CLEAR = -33,
CSS2PROPERTIES_CLIP = -34,
CSS2PROPERTIES_COLOR = -35,
CSS2PROPERTIES_CONTENT = -36,
CSS2PROPERTIES_COUNTERINCREMENT = -37,
CSS2PROPERTIES_COUNTERRESET = -38,
CSS2PROPERTIES_CUE = -39,
CSS2PROPERTIES_CUEAFTER = -40,
CSS2PROPERTIES_CUEBEFORE = -41,
CSS2PROPERTIES_CURSOR = -42,
CSS2PROPERTIES_DIRECTION = -43,
CSS2PROPERTIES_DISPLAY = -44,
CSS2PROPERTIES_ELEVATION = -45,
CSS2PROPERTIES_EMPTYCELLS = -46,
CSS2PROPERTIES_CSSFLOAT = -47,
CSS2PROPERTIES_FONT = -48,
CSS2PROPERTIES_FONTFAMILY = -49,
CSS2PROPERTIES_FONTSIZE = -50,
CSS2PROPERTIES_FONTSIZEADJUST = -51,
CSS2PROPERTIES_FONTSTRETCH = -52,
CSS2PROPERTIES_FONTSTYLE = -53,
CSS2PROPERTIES_FONTVARIANT = -54,
CSS2PROPERTIES_FONTWEIGHT = -55,
CSS2PROPERTIES_HEIGHT = -56,
CSS2PROPERTIES_LEFT = -57,
CSS2PROPERTIES_LETTERSPACING = -58,
CSS2PROPERTIES_LINEHEIGHT = -59,
CSS2PROPERTIES_LISTSTYLE = -60,
CSS2PROPERTIES_LISTSTYLEIMAGE = -61,
CSS2PROPERTIES_LISTSTYLEPOSITION = -62,
CSS2PROPERTIES_LISTSTYLETYPE = -63,
CSS2PROPERTIES_MARGIN = -64,
CSS2PROPERTIES_MARGINTOP = -65,
CSS2PROPERTIES_MARGINRIGHT = -66,
CSS2PROPERTIES_MARGINBOTTOM = -67,
CSS2PROPERTIES_MARGINLEFT = -68,
CSS2PROPERTIES_MARKEROFFSET = -69,
CSS2PROPERTIES_MARKS = -70,
CSS2PROPERTIES_MAXHEIGHT = -71,
CSS2PROPERTIES_MAXWIDTH = -72,
CSS2PROPERTIES_MINHEIGHT = -73,
CSS2PROPERTIES_MINWIDTH = -74,
CSS2PROPERTIES_ORPHANS = -75,
CSS2PROPERTIES_OUTLINE = -76,
CSS2PROPERTIES_OUTLINECOLOR = -77,
CSS2PROPERTIES_OUTLINESTYLE = -78,
CSS2PROPERTIES_OUTLINEWIDTH = -79,
CSS2PROPERTIES_OVERFLOW = -80,
CSS2PROPERTIES_PADDING = -81,
CSS2PROPERTIES_PADDINGTOP = -82,
CSS2PROPERTIES_PADDINGRIGHT = -83,
CSS2PROPERTIES_PADDINGBOTTOM = -84,
CSS2PROPERTIES_PADDINGLEFT = -85,
CSS2PROPERTIES_PAGE = -86,
CSS2PROPERTIES_PAGEBREAKAFTER = -87,
CSS2PROPERTIES_PAGEBREAKBEFORE = -88,
CSS2PROPERTIES_PAGEBREAKINSIDE = -89,
CSS2PROPERTIES_PAUSE = -90,
CSS2PROPERTIES_PAUSEAFTER = -91,
CSS2PROPERTIES_PAUSEBEFORE = -92,
CSS2PROPERTIES_PITCH = -93,
CSS2PROPERTIES_PITCHRANGE = -94,
CSS2PROPERTIES_PLAYDURING = -95,
CSS2PROPERTIES_POSITION = -96,
CSS2PROPERTIES_QUOTES = -97,
CSS2PROPERTIES_RICHNESS = -98,
CSS2PROPERTIES_RIGHT = -99,
CSS2PROPERTIES_SIZE = -100,
CSS2PROPERTIES_SPEAK = -101,
CSS2PROPERTIES_SPEAKHEADER = -102,
CSS2PROPERTIES_SPEAKNUMERAL = -103,
CSS2PROPERTIES_SPEAKPUNCTUATION = -104,
CSS2PROPERTIES_SPEECHRATE = -105,
CSS2PROPERTIES_STRESS = -106,
CSS2PROPERTIES_TABLELAYOUT = -107,
CSS2PROPERTIES_TEXTALIGN = -108,
CSS2PROPERTIES_TEXTDECORATION = -109,
CSS2PROPERTIES_TEXTINDENT = -110,
CSS2PROPERTIES_TEXTSHADOW = -111,
CSS2PROPERTIES_TEXTTRANSFORM = -112,
CSS2PROPERTIES_TOP = -113,
CSS2PROPERTIES_UNICODEBIDI = -114,
CSS2PROPERTIES_VERTICALALIGN = -115,
CSS2PROPERTIES_VISIBILITY = -116,
CSS2PROPERTIES_VOICEFAMILY = -117,
CSS2PROPERTIES_VOLUME = -118,
CSS2PROPERTIES_WHITESPACE = -119,
CSS2PROPERTIES_WIDOWS = -120,
CSS2PROPERTIES_WIDTH = -121,
CSS2PROPERTIES_WORDSPACING = -122,
CSS2PROPERTIES_ZINDEX = -123,
CSS2PROPERTIES_OPACITY = -124
};
/***********************************************************************/
@ -319,6 +320,24 @@ GetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
}
break;
}
case CSS2PROPERTIES_BEHAVIOR:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BEHAVIOR, PR_FALSE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);
}
nsAutoString prop;
nsresult result = NS_OK;
result = a->GetBehavior(prop);
if (NS_SUCCEEDED(result)) {
nsJSUtils::nsConvertStringToJSVal(prop, cx, vp);
}
else {
return nsJSUtils::nsReportError(cx, obj, result);
}
break;
}
case CSS2PROPERTIES_BORDER:
{
PRBool ok = PR_FALSE;
@ -2538,6 +2557,20 @@ SetCSS2PropertiesProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
break;
}
case CSS2PROPERTIES_BEHAVIOR:
{
PRBool ok = PR_FALSE;
secMan->CheckScriptAccess(cx, obj, NS_DOM_PROP_CSS2PROPERTIES_BEHAVIOR, PR_TRUE, &ok);
if (!ok) {
return nsJSUtils::nsReportError(cx, obj, NS_ERROR_DOM_SECURITY_ERR);
}
nsAutoString prop;
nsJSUtils::nsConvertJSValToString(prop, cx, *vp);
a->SetBehavior(prop);
break;
}
case CSS2PROPERTIES_BORDER:
{
PRBool ok = PR_FALSE;
@ -4234,6 +4267,7 @@ static JSPropertySpec CSS2PropertiesProperties[] =
{"backgroundImage", CSS2PROPERTIES_BACKGROUNDIMAGE, JSPROP_ENUMERATE},
{"backgroundPosition", CSS2PROPERTIES_BACKGROUNDPOSITION, JSPROP_ENUMERATE},
{"backgroundRepeat", CSS2PROPERTIES_BACKGROUNDREPEAT, JSPROP_ENUMERATE},
{"behavior", CSS2PROPERTIES_BEHAVIOR, JSPROP_ENUMERATE},
{"border", CSS2PROPERTIES_BORDER, JSPROP_ENUMERATE},
{"borderCollapse", CSS2PROPERTIES_BORDERCOLLAPSE, JSPROP_ENUMERATE},
{"borderColor", CSS2PROPERTIES_BORDERCOLOR, JSPROP_ENUMERATE},

Просмотреть файл

@ -3734,6 +3734,17 @@ nsCSSFrameConstructor::CreateAnonymousFrames(nsIPresShell* aPresShell,
nsIFrame* aNewFrame,
nsFrameItems& aChildItems)
{
/*
nsCOMPtr<nsIStyleContext> styleContext;
aNewFrame->GetStyleContext(getter_AddRefs(styleContext));
const nsStyleUserInterface* ui= (const nsStyleUserInterface*)
styleContext->GetStyleData(eStyleStruct_UserInterface);
if (ui->mBehavior != "")
printf("The behavior is not the empty string!\n");
*/
// only these tags types can have anonymous content. We do this check for performance
// reasons. If we did a query interface on every tag it would be very inefficient.
if (aTag != nsHTMLAtoms::input &&

Просмотреть файл

@ -293,6 +293,8 @@ struct nsStyleUserInterface: public nsStyleStruct {
PRUint8 mUserFocus; // [inherited] (auto-select)
PRUnichar mKeyEquivalent; // [reset] XXX what type should this be?
PRUint8 mResizer; // [reset]
nsString mBehavior; // [reset] absolute url string
};
struct nsStylePrint: public nsStyleStruct {

Просмотреть файл

@ -1496,16 +1496,33 @@ void StyleUserInterfaceImpl::ResetFrom(const nsStyleUserInterface* aParent, nsIP
void StyleUserInterfaceImpl::SetFrom(const nsStyleUserInterface& aSource)
{
nsCRT::memcpy((nsStyleUserInterface*)this, &aSource, sizeof(nsStyleUserInterface));
mUserInput = aSource.mUserInput;
mUserModify = aSource.mUserModify;
mUserFocus = aSource.mUserFocus;
mUserSelect = aSource.mUserSelect;
mKeyEquivalent = aSource.mKeyEquivalent;
mResizer = aSource.mResizer;
mBehavior = aSource.mBehavior;
}
void StyleUserInterfaceImpl::CopyTo(nsStyleUserInterface& aDest) const
{
nsCRT::memcpy(&aDest, (const nsStyleUserInterface*)this, sizeof(nsStyleUserInterface));
aDest.mUserInput = mUserInput;
aDest.mUserModify = mUserModify;
aDest.mUserFocus = mUserFocus;
aDest.mUserSelect = mUserSelect;
aDest.mKeyEquivalent = mKeyEquivalent;
aDest.mResizer = mResizer;
aDest.mBehavior = mBehavior;
}
PRInt32 StyleUserInterfaceImpl::CalcDifference(const StyleUserInterfaceImpl& aOther) const
{
if (mBehavior != aOther.mBehavior)
return NS_STYLE_HINT_FRAMECHANGE;
if ((mUserInput == aOther.mUserInput) &&
(mResizer == aOther.mResizer)) {
if ((mUserModify == aOther.mUserModify) &&

Просмотреть файл

@ -796,7 +796,8 @@ nsCSSUserInterface::nsCSSUserInterface(const nsCSSUserInterface& aCopy)
mUserSelect(aCopy.mUserSelect),
mKeyEquivalent(nsnull),
mUserFocus(aCopy.mUserFocus),
mResizer(aCopy.mResizer)
mResizer(aCopy.mResizer),
mBehavior(aCopy.mBehavior)
{
CSS_IF_COPY(mKeyEquivalent, nsCSSValueList);
}
@ -827,6 +828,7 @@ void nsCSSUserInterface::List(FILE* out, PRInt32 aIndent) const
}
mUserFocus.AppendToString(buffer, eCSSProperty_user_focus);
mResizer.AppendToString(buffer, eCSSProperty_resizer);
mBehavior.AppendToString(buffer, eCSSProperty_behavior);
fputs(buffer, out);
}
@ -1566,6 +1568,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
CSS_ENSURE(UserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: mUserInterface->mUserInput = aValue; break;
@ -1579,6 +1582,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
break;
case eCSSProperty_user_focus: mUserInterface->mUserFocus = aValue; break;
case eCSSProperty_resizer: mUserInterface->mResizer = aValue; break;
case eCSSProperty_behavior: mUserInterface->mBehavior = aValue; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2269,6 +2273,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
case eCSSProperty_user_select:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
CSS_ENSURE_IMPORTANT(UserInterface) {
switch (aProperty) {
@ -2277,6 +2282,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
CSS_CASE_IMPORTANT(eCSSProperty_user_select, mUserInterface->mUserSelect);
CSS_CASE_IMPORTANT(eCSSProperty_user_focus, mUserInterface->mUserFocus);
CSS_CASE_IMPORTANT(eCSSProperty_resizer, mUserInterface->mResizer);
CSS_CASE_IMPORTANT(eCSSProperty_behavior, mUserInterface->mBehavior);
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2954,6 +2960,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: aValue = mUserInterface->mUserInput; break;
@ -2966,6 +2973,8 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
break;
case eCSSProperty_user_focus: aValue = mUserInterface->mUserFocus; break;
case eCSSProperty_resizer: aValue = mUserInterface->mResizer; break;
case eCSSProperty_behavior: aValue = mUserInterface->mBehavior; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}

Просмотреть файл

@ -3734,6 +3734,17 @@ nsCSSFrameConstructor::CreateAnonymousFrames(nsIPresShell* aPresShell,
nsIFrame* aNewFrame,
nsFrameItems& aChildItems)
{
/*
nsCOMPtr<nsIStyleContext> styleContext;
aNewFrame->GetStyleContext(getter_AddRefs(styleContext));
const nsStyleUserInterface* ui= (const nsStyleUserInterface*)
styleContext->GetStyleData(eStyleStruct_UserInterface);
if (ui->mBehavior != "")
printf("The behavior is not the empty string!\n");
*/
// only these tags types can have anonymous content. We do this check for performance
// reasons. If we did a query interface on every tag it would be very inefficient.
if (aTag != nsHTMLAtoms::input &&

Просмотреть файл

@ -2838,6 +2838,8 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode,
case eCSSProperty_background_y_position:
return ParseVariant(aErrorCode, aValue, VARIANT_HKLP,
kBackgroundXYPositionKTable);
case eCSSProperty_behavior:
return ParseVariant(aErrorCode, aValue, VARIANT_HUO, nsnull);
case eCSSProperty_border_collapse:
return ParseVariant(aErrorCode, aValue, VARIANT_HK,
nsCSSProps::kBorderCollapseKTable);

Просмотреть файл

@ -56,6 +56,7 @@ CSS_PROP(background_position, VISUAL)
CSS_PROP(background_repeat, VISUAL)
CSS_PROP(background_x_position, VISUAL)
CSS_PROP(background_y_position, VISUAL)
CSS_PROP(behavior, REFLOW)
CSS_PROP(border, REFLOW)
CSS_PROP(border_bottom, REFLOW)
CSS_PROP(border_bottom_color, VISUAL)

Просмотреть файл

@ -720,6 +720,9 @@ static const PRInt32 kBackgroundYPositionKTable[] = {
case eCSSProperty_background_y_position:
return SearchKeywordTable(aValue, kBackgroundYPositionKTable);
case eCSSProperty_behavior:
break;
case eCSSProperty_border:
break;

Просмотреть файл

@ -2523,6 +2523,11 @@ MapDeclarationUIInto(nsICSSDeclaration* aDeclaration,
ui->mUserSelect = parentUI->mUserSelect;
}
// behavior: url, none
if (eCSSUnit_URL == ourUI->mBehavior.GetUnit()) {
ourUI->mBehavior.GetStringValue(ui->mBehavior);
}
// key-equivalent: none, enum XXX, inherit
nsCSSValueList* keyEquiv = ourUI->mKeyEquivalent;
if (keyEquiv) {

Просмотреть файл

@ -296,6 +296,18 @@ nsDOMCSSDeclaration::SetBackgroundRepeat(const nsString& aBackgroundRepeat)
return SetProperty("background-repeat", aBackgroundRepeat, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBehavior(nsString& aBehavior)
{
return GetPropertyValue("behavior", aBehavior);
}
NS_IMETHODIMP
nsDOMCSSDeclaration::SetBehavior(const nsString& aBehavior)
{
return SetProperty("behavior", aBehavior, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBorder(nsString& aBorder)
{

Просмотреть файл

@ -349,6 +349,7 @@ struct nsCSSUserInterface : public nsCSSStruct { // NEW
nsCSSValueList* mKeyEquivalent;
nsCSSValue mUserFocus;
nsCSSValue mResizer;
nsCSSValue mBehavior;
};
struct nsCSSAural : public nsCSSStruct { // NEW

Просмотреть файл

@ -796,7 +796,8 @@ nsCSSUserInterface::nsCSSUserInterface(const nsCSSUserInterface& aCopy)
mUserSelect(aCopy.mUserSelect),
mKeyEquivalent(nsnull),
mUserFocus(aCopy.mUserFocus),
mResizer(aCopy.mResizer)
mResizer(aCopy.mResizer),
mBehavior(aCopy.mBehavior)
{
CSS_IF_COPY(mKeyEquivalent, nsCSSValueList);
}
@ -827,6 +828,7 @@ void nsCSSUserInterface::List(FILE* out, PRInt32 aIndent) const
}
mUserFocus.AppendToString(buffer, eCSSProperty_user_focus);
mResizer.AppendToString(buffer, eCSSProperty_resizer);
mBehavior.AppendToString(buffer, eCSSProperty_behavior);
fputs(buffer, out);
}
@ -1566,6 +1568,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
CSS_ENSURE(UserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: mUserInterface->mUserInput = aValue; break;
@ -1579,6 +1582,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
break;
case eCSSProperty_user_focus: mUserInterface->mUserFocus = aValue; break;
case eCSSProperty_resizer: mUserInterface->mResizer = aValue; break;
case eCSSProperty_behavior: mUserInterface->mBehavior = aValue; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2269,6 +2273,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
case eCSSProperty_user_select:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
CSS_ENSURE_IMPORTANT(UserInterface) {
switch (aProperty) {
@ -2277,6 +2282,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
CSS_CASE_IMPORTANT(eCSSProperty_user_select, mUserInterface->mUserSelect);
CSS_CASE_IMPORTANT(eCSSProperty_user_focus, mUserInterface->mUserFocus);
CSS_CASE_IMPORTANT(eCSSProperty_resizer, mUserInterface->mResizer);
CSS_CASE_IMPORTANT(eCSSProperty_behavior, mUserInterface->mBehavior);
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2954,6 +2960,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: aValue = mUserInterface->mUserInput; break;
@ -2966,6 +2973,8 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
break;
case eCSSProperty_user_focus: aValue = mUserInterface->mUserFocus; break;
case eCSSProperty_resizer: aValue = mUserInterface->mResizer; break;
case eCSSProperty_behavior: aValue = mUserInterface->mBehavior; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}

Просмотреть файл

@ -2838,6 +2838,8 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode,
case eCSSProperty_background_y_position:
return ParseVariant(aErrorCode, aValue, VARIANT_HKLP,
kBackgroundXYPositionKTable);
case eCSSProperty_behavior:
return ParseVariant(aErrorCode, aValue, VARIANT_HUO, nsnull);
case eCSSProperty_border_collapse:
return ParseVariant(aErrorCode, aValue, VARIANT_HK,
nsCSSProps::kBorderCollapseKTable);

Просмотреть файл

@ -56,6 +56,7 @@ CSS_PROP(background_position, VISUAL)
CSS_PROP(background_repeat, VISUAL)
CSS_PROP(background_x_position, VISUAL)
CSS_PROP(background_y_position, VISUAL)
CSS_PROP(behavior, REFLOW)
CSS_PROP(border, REFLOW)
CSS_PROP(border_bottom, REFLOW)
CSS_PROP(border_bottom_color, VISUAL)

Просмотреть файл

@ -720,6 +720,9 @@ static const PRInt32 kBackgroundYPositionKTable[] = {
case eCSSProperty_background_y_position:
return SearchKeywordTable(aValue, kBackgroundYPositionKTable);
case eCSSProperty_behavior:
break;
case eCSSProperty_border:
break;

Просмотреть файл

@ -796,7 +796,8 @@ nsCSSUserInterface::nsCSSUserInterface(const nsCSSUserInterface& aCopy)
mUserSelect(aCopy.mUserSelect),
mKeyEquivalent(nsnull),
mUserFocus(aCopy.mUserFocus),
mResizer(aCopy.mResizer)
mResizer(aCopy.mResizer),
mBehavior(aCopy.mBehavior)
{
CSS_IF_COPY(mKeyEquivalent, nsCSSValueList);
}
@ -827,6 +828,7 @@ void nsCSSUserInterface::List(FILE* out, PRInt32 aIndent) const
}
mUserFocus.AppendToString(buffer, eCSSProperty_user_focus);
mResizer.AppendToString(buffer, eCSSProperty_resizer);
mBehavior.AppendToString(buffer, eCSSProperty_behavior);
fputs(buffer, out);
}
@ -1566,6 +1568,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
CSS_ENSURE(UserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: mUserInterface->mUserInput = aValue; break;
@ -1579,6 +1582,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu
break;
case eCSSProperty_user_focus: mUserInterface->mUserFocus = aValue; break;
case eCSSProperty_resizer: mUserInterface->mResizer = aValue; break;
case eCSSProperty_behavior: mUserInterface->mBehavior = aValue; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2269,6 +2273,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
case eCSSProperty_user_select:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
CSS_ENSURE_IMPORTANT(UserInterface) {
switch (aProperty) {
@ -2277,6 +2282,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty)
CSS_CASE_IMPORTANT(eCSSProperty_user_select, mUserInterface->mUserSelect);
CSS_CASE_IMPORTANT(eCSSProperty_user_focus, mUserInterface->mUserFocus);
CSS_CASE_IMPORTANT(eCSSProperty_resizer, mUserInterface->mResizer);
CSS_CASE_IMPORTANT(eCSSProperty_behavior, mUserInterface->mBehavior);
CSS_BOGUS_DEFAULT; // make compiler happy
}
}
@ -2954,6 +2960,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
case eCSSProperty_key_equivalent:
case eCSSProperty_user_focus:
case eCSSProperty_resizer:
case eCSSProperty_behavior:
if (nsnull != mUserInterface) {
switch (aProperty) {
case eCSSProperty_user_input: aValue = mUserInterface->mUserInput; break;
@ -2966,6 +2973,8 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
break;
case eCSSProperty_user_focus: aValue = mUserInterface->mUserFocus; break;
case eCSSProperty_resizer: aValue = mUserInterface->mResizer; break;
case eCSSProperty_behavior: aValue = mUserInterface->mBehavior; break;
CSS_BOGUS_DEFAULT; // make compiler happy
}
}

Просмотреть файл

@ -2523,6 +2523,11 @@ MapDeclarationUIInto(nsICSSDeclaration* aDeclaration,
ui->mUserSelect = parentUI->mUserSelect;
}
// behavior: url, none
if (eCSSUnit_URL == ourUI->mBehavior.GetUnit()) {
ourUI->mBehavior.GetStringValue(ui->mBehavior);
}
// key-equivalent: none, enum XXX, inherit
nsCSSValueList* keyEquiv = ourUI->mKeyEquivalent;
if (keyEquiv) {

Просмотреть файл

@ -296,6 +296,18 @@ nsDOMCSSDeclaration::SetBackgroundRepeat(const nsString& aBackgroundRepeat)
return SetProperty("background-repeat", aBackgroundRepeat, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBehavior(nsString& aBehavior)
{
return GetPropertyValue("behavior", aBehavior);
}
NS_IMETHODIMP
nsDOMCSSDeclaration::SetBehavior(const nsString& aBehavior)
{
return SetProperty("behavior", aBehavior, "");
}
NS_IMETHODIMP
nsDOMCSSDeclaration::GetBorder(nsString& aBorder)
{

Просмотреть файл

@ -1496,16 +1496,33 @@ void StyleUserInterfaceImpl::ResetFrom(const nsStyleUserInterface* aParent, nsIP
void StyleUserInterfaceImpl::SetFrom(const nsStyleUserInterface& aSource)
{
nsCRT::memcpy((nsStyleUserInterface*)this, &aSource, sizeof(nsStyleUserInterface));
mUserInput = aSource.mUserInput;
mUserModify = aSource.mUserModify;
mUserFocus = aSource.mUserFocus;
mUserSelect = aSource.mUserSelect;
mKeyEquivalent = aSource.mKeyEquivalent;
mResizer = aSource.mResizer;
mBehavior = aSource.mBehavior;
}
void StyleUserInterfaceImpl::CopyTo(nsStyleUserInterface& aDest) const
{
nsCRT::memcpy(&aDest, (const nsStyleUserInterface*)this, sizeof(nsStyleUserInterface));
aDest.mUserInput = mUserInput;
aDest.mUserModify = mUserModify;
aDest.mUserFocus = mUserFocus;
aDest.mUserSelect = mUserSelect;
aDest.mKeyEquivalent = mKeyEquivalent;
aDest.mResizer = mResizer;
aDest.mBehavior = mBehavior;
}
PRInt32 StyleUserInterfaceImpl::CalcDifference(const StyleUserInterfaceImpl& aOther) const
{
if (mBehavior != aOther.mBehavior)
return NS_STYLE_HINT_FRAMECHANGE;
if ((mUserInput == aOther.mUserInput) &&
(mResizer == aOther.mResizer)) {
if ((mUserModify == aOther.mUserModify) &&