mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 450939 - Add -moz-window-shadow CSS property, r+sr=dbaron
This commit is contained in:
parent
44f284fa35
commit
85e0b205be
@ -406,7 +406,7 @@ interface nsIDOMCSS2Properties : nsISupports
|
||||
// raises(DOMException) on setting
|
||||
};
|
||||
|
||||
[scriptable, uuid(06b9eb9a-a845-4cb7-a941-fa87305ded4b)]
|
||||
[scriptable, uuid(e7245a21-3f46-4e67-82bf-a9b326fe74ee)]
|
||||
interface nsIDOMNSCSS2Properties : nsIDOMCSS2Properties
|
||||
{
|
||||
/* Non-DOM 2 extensions */
|
||||
@ -620,5 +620,8 @@ interface nsIDOMNSCSS2Properties : nsIDOMCSS2Properties
|
||||
|
||||
attribute DOMString MozTransformOrigin;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozWindowShadow;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
};
|
||||
|
@ -710,6 +710,10 @@
|
||||
#define NS_STYLE_IME_MODE_DISABLED 3
|
||||
#define NS_STYLE_IME_MODE_INACTIVE 4
|
||||
|
||||
// See nsStyleUIReset
|
||||
#define NS_STYLE_WINDOW_SHADOW_NONE 0
|
||||
#define NS_STYLE_WINDOW_SHADOW_DEFAULT 1
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
// See nsStyleSVG
|
||||
|
||||
|
@ -5623,6 +5623,9 @@ CSSParserImpl::ParseSingleValueProperty(nsCSSValue& aValue,
|
||||
case eCSSProperty_white_space:
|
||||
return ParseVariant(aValue, VARIANT_HMK,
|
||||
nsCSSProps::kWhitespaceKTable);
|
||||
case eCSSProperty__moz_window_shadow:
|
||||
return ParseVariant(aValue, VARIANT_HOK,
|
||||
nsCSSProps::kWindowShadowKTable);
|
||||
case eCSSProperty_word_wrap:
|
||||
return ParseVariant(aValue, VARIANT_HMK,
|
||||
nsCSSProps::kWordwrapKTable);
|
||||
|
@ -517,6 +517,7 @@ CSS_PROP_BACKENDONLY(volume, volume, Volume, 0, Aural, mVolume, eCSSType_Value,
|
||||
CSS_PROP_TEXT(white-space, white_space, WhiteSpace, 0, Text, mWhiteSpace, eCSSType_Value, kWhitespaceKTable)
|
||||
CSS_PROP_BACKENDONLY(widows, widows, Widows, 0, Breaks, mWidows, eCSSType_Value, nsnull)
|
||||
CSS_PROP_POSITION(width, width, Width, 0, Position, mWidth, eCSSType_Value, kWidthKTable)
|
||||
CSS_PROP_UIRESET(-moz-window-shadow, _moz_window_shadow, MozWindowShadow, 0, UserInterface, mWindowShadow, eCSSType_Value, kWindowShadowKTable)
|
||||
CSS_PROP_TEXT(word-spacing, word_spacing, WordSpacing, 0, Text, mWordSpacing, eCSSType_Value, nsnull)
|
||||
CSS_PROP_TEXT(word-wrap, word_wrap, WordWrap, 0, Text, mWordWrap, eCSSType_Value, kWordwrapKTable)
|
||||
CSS_PROP_POSITION(z-index, z_index, ZIndex, 0, Position, mZIndex, eCSSType_Value, nsnull)
|
||||
|
@ -1047,6 +1047,11 @@ const PRInt32 nsCSSProps::kWidthKTable[] = {
|
||||
eCSSKeyword_UNKNOWN,-1
|
||||
};
|
||||
|
||||
const PRInt32 nsCSSProps::kWindowShadowKTable[] = {
|
||||
eCSSKeyword_default, NS_STYLE_WINDOW_SHADOW_DEFAULT,
|
||||
eCSSKeyword_UNKNOWN,-1
|
||||
};
|
||||
|
||||
const PRInt32 nsCSSProps::kWordwrapKTable[] = {
|
||||
eCSSKeyword_normal, NS_STYLE_WORDWRAP_NORMAL,
|
||||
eCSSKeyword_break_word, NS_STYLE_WORDWRAP_BREAK_WORD,
|
||||
|
@ -204,6 +204,7 @@ public:
|
||||
static const PRInt32 kVolumeKTable[];
|
||||
static const PRInt32 kWhitespaceKTable[];
|
||||
static const PRInt32 kWidthKTable[]; // also min-width, max-width
|
||||
static const PRInt32 kWindowShadowKTable[];
|
||||
static const PRInt32 kWordwrapKTable[];
|
||||
};
|
||||
|
||||
|
@ -560,6 +560,7 @@ struct nsCSSUserInterface : public nsCSSStruct { // NEW
|
||||
nsCSSValueList* mCursor;
|
||||
nsCSSValue mForceBrokenImageIcon;
|
||||
nsCSSValue mIMEMode;
|
||||
nsCSSValue mWindowShadow;
|
||||
private:
|
||||
nsCSSUserInterface(const nsCSSUserInterface& aOther); // NOT IMPLEMENTED
|
||||
};
|
||||
|
@ -2148,6 +2148,27 @@ nsComputedDOMStyle::GetWhiteSpace(nsIDOMCSSValue** aValue)
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetWindowShadow(nsIDOMCSSValue** aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleUIReset *uiData = GetStyleUIReset();
|
||||
|
||||
if (uiData->mWindowShadow != NS_STYLE_WINDOW_SHADOW_NONE) {
|
||||
const nsAFlatCString& windowShadow =
|
||||
nsCSSProps::ValueToKeyword(uiData->mWindowShadow,
|
||||
nsCSSProps::kWindowShadowKTable);
|
||||
val->SetIdent(windowShadow);
|
||||
} else {
|
||||
val->SetIdent(nsGkAtoms::none);
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetWordWrap(nsIDOMCSSValue** aValue)
|
||||
{
|
||||
@ -4200,6 +4221,7 @@ nsComputedDOMStyle::GetQueryablePropertyMap(PRUint32* aLength)
|
||||
COMPUTED_STYLE_MAP_ENTRY(user_input, UserInput),
|
||||
COMPUTED_STYLE_MAP_ENTRY(user_modify, UserModify),
|
||||
COMPUTED_STYLE_MAP_ENTRY(user_select, UserSelect),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_window_shadow, WindowShadow),
|
||||
COMPUTED_STYLE_MAP_ENTRY(word_wrap, WordWrap)
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
|
@ -203,6 +203,9 @@ private:
|
||||
/* Box Shadow */
|
||||
nsresult GetBoxShadow(nsIDOMCSSValue** aValue);
|
||||
|
||||
/* Window Shadow */
|
||||
nsresult GetWindowShadow(nsIDOMCSSValue** aValue);
|
||||
|
||||
/* Margin Properties */
|
||||
nsresult GetMarginWidth(nsIDOMCSSValue** aValue);
|
||||
nsresult GetMarginTopWidth(nsIDOMCSSValue** aValue);
|
||||
|
@ -3120,6 +3120,12 @@ nsRuleNode::ComputeUIResetData(void* aStartStruct,
|
||||
parentUI->mForceBrokenImageIcon,
|
||||
0, 0, 0, 0, 0);
|
||||
|
||||
// -moz-window-shadow: enum, none, inherit, initial
|
||||
SetDiscrete(uiData.mWindowShadow, ui->mWindowShadow, inherited,
|
||||
SETDSC_ENUMERATED | SETDSC_NONE, parentUI->mWindowShadow,
|
||||
NS_STYLE_WINDOW_SHADOW_DEFAULT, 0,
|
||||
NS_STYLE_WINDOW_SHADOW_NONE, 0, 0);
|
||||
|
||||
COMPUTE_END_RESET(UIReset, ui)
|
||||
}
|
||||
|
||||
|
@ -805,9 +805,10 @@ void nsStyleContext::DumpRegressionData(nsPresContext* aPresContext, FILE* out,
|
||||
// UIReset
|
||||
IndentBy(out,aIndent);
|
||||
const nsStyleUIReset* uiReset = GetStyleUIReset();
|
||||
fprintf(out, "<uireset data=\"%d %d\" />\n",
|
||||
fprintf(out, "<uireset data=\"%d %d %d\" />\n",
|
||||
(int)uiReset->mUserSelect,
|
||||
(int)uiReset->mIMEMode);
|
||||
(int)uiReset->mIMEMode,
|
||||
(int)uiReset->mWindowShadow);
|
||||
|
||||
// Column
|
||||
IndentBy(out,aIndent);
|
||||
|
@ -1901,6 +1901,7 @@ nsStyleUIReset::nsStyleUIReset(void)
|
||||
mUserSelect = NS_STYLE_USER_SELECT_AUTO;
|
||||
mForceBrokenImageIcon = 0;
|
||||
mIMEMode = NS_STYLE_IME_MODE_AUTO;
|
||||
mWindowShadow = NS_STYLE_WINDOW_SHADOW_DEFAULT;
|
||||
}
|
||||
|
||||
nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
|
||||
@ -1908,6 +1909,7 @@ nsStyleUIReset::nsStyleUIReset(const nsStyleUIReset& aSource)
|
||||
mUserSelect = aSource.mUserSelect;
|
||||
mForceBrokenImageIcon = aSource.mForceBrokenImageIcon;
|
||||
mIMEMode = aSource.mIMEMode;
|
||||
mWindowShadow = aSource.mWindowShadow;
|
||||
}
|
||||
|
||||
nsStyleUIReset::~nsStyleUIReset(void)
|
||||
@ -1917,13 +1919,17 @@ nsStyleUIReset::~nsStyleUIReset(void)
|
||||
nsChangeHint nsStyleUIReset::CalcDifference(const nsStyleUIReset& aOther) const
|
||||
{
|
||||
// ignore mIMEMode
|
||||
if (mForceBrokenImageIcon == aOther.mForceBrokenImageIcon) {
|
||||
if (mUserSelect == aOther.mUserSelect) {
|
||||
return NS_STYLE_HINT_NONE;
|
||||
}
|
||||
return NS_STYLE_HINT_VISUAL;
|
||||
if (mForceBrokenImageIcon != aOther.mForceBrokenImageIcon)
|
||||
return NS_STYLE_HINT_FRAMECHANGE;
|
||||
if (mWindowShadow != aOther.mWindowShadow) {
|
||||
// We really need just an nsChangeHint_SyncFrameView, except
|
||||
// on an ancestor of the frame, so we get that by doing a
|
||||
// reflow.
|
||||
return NS_STYLE_HINT_REFLOW;
|
||||
}
|
||||
return NS_STYLE_HINT_FRAMECHANGE;
|
||||
if (mUserSelect != aOther.mUserSelect)
|
||||
return NS_STYLE_HINT_VISUAL;
|
||||
return NS_STYLE_HINT_NONE;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -1241,6 +1241,7 @@ struct nsStyleUIReset {
|
||||
PRUint8 mUserSelect; // [reset] (selection-style)
|
||||
PRUint8 mForceBrokenImageIcon; // [reset] (0 if not forcing, otherwise forcing)
|
||||
PRUint8 mIMEMode; // [reset]
|
||||
PRUint8 mWindowShadow; // [reset]
|
||||
};
|
||||
|
||||
struct nsCursorImage {
|
||||
|
@ -589,6 +589,14 @@ var gCSSProperties = {
|
||||
other_values: [ "none", "text", "element", "elements", "all", "toggle", "tri-state", "-moz-all", "-moz-none" ],
|
||||
invalid_values: []
|
||||
},
|
||||
"-moz-window-shadow": {
|
||||
domProp: "MozWindowShadow",
|
||||
inherited: false,
|
||||
type: CSS_TYPE_LONGHAND,
|
||||
initial_values: [ "default" ],
|
||||
other_values: [ "none" ],
|
||||
invalid_values: []
|
||||
},
|
||||
"azimuth": {
|
||||
domProp: "azimuth",
|
||||
inherited: true,
|
||||
|
Loading…
Reference in New Issue
Block a user