Bug 442228, add -moz-resize property to indicate that elements are resizable, r=dbaron

This commit is contained in:
Neil Deakin 2010-03-19 07:49:33 -04:00
Родитель 37b034371c
Коммит 27dcf91d68
13 изменённых файлов: 67 добавлений и 2 удалений

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

@ -40,7 +40,7 @@
#include "nsIDOMSVGCSS2Properties.idl"
[scriptable, uuid(be39bc6d-3b24-4421-9599-8fdf3ad33baf)]
[scriptable, uuid(649B0B41-C5F7-4EA2-B6DF-CFFF6B6DD30A)]
interface nsIDOMNSCSS2Properties : nsIDOMSVGCSS2Properties
{
/* Non-DOM 2 extensions */
@ -281,4 +281,7 @@ interface nsIDOMNSCSS2Properties : nsIDOMSVGCSS2Properties
attribute DOMString MozTabSize;
// raises(DOMException) on setting
attribute DOMString MozResize;
// raises(DOMException) on setting
};

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

@ -593,6 +593,12 @@
#define NS_STYLE_POINTER_EVENTS_ALL 8
#define NS_STYLE_POINTER_EVENTS_AUTO 9
// See nsStyleDisplay
#define NS_STYLE_RESIZE_NONE 0
#define NS_STYLE_RESIZE_BOTH 1
#define NS_STYLE_RESIZE_HORIZONTAL 2
#define NS_STYLE_RESIZE_VERTICAL 3
// See nsStyleText
#define NS_STYLE_TEXT_ALIGN_DEFAULT 0
#define NS_STYLE_TEXT_ALIGN_LEFT 1

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

@ -6019,6 +6019,9 @@ CSSParserImpl::ParseSingleValueProperty(nsCSSValue& aValue,
nsCSSProps::kPointerEventsKTable);
case eCSSProperty_position:
return ParseVariant(aValue, VARIANT_HK, nsCSSProps::kPositionKTable);
case eCSSProperty_resize:
return ParseVariant(aValue, VARIANT_HK,
nsCSSProps::kResizeKTable);
case eCSSProperty_richness:
return ParseVariant(aValue, VARIANT_HN, nsnull);
#ifdef MOZ_MATHML

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

@ -2185,6 +2185,17 @@ CSS_PROP_QUOTES(
nsnull,
CSS_PROP_NO_OFFSET,
eStyleAnimType_None)
CSS_PROP_DISPLAY(
-moz-resize,
resize,
MozResize,
0,
Display,
mResize,
eCSSType_Value,
kResizeKTable,
CSS_PROP_NO_OFFSET,
eStyleAnimType_None)
CSS_PROP_BACKENDONLY(
richness,
richness,

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

@ -1106,6 +1106,14 @@ const PRInt32 nsCSSProps::kRadialGradientSizeKTable[] = {
eCSSKeyword_UNKNOWN,-1
};
const PRInt32 nsCSSProps::kResizeKTable[] = {
eCSSKeyword_none, NS_STYLE_RESIZE_NONE,
eCSSKeyword_both, NS_STYLE_RESIZE_BOTH,
eCSSKeyword_horizontal, NS_STYLE_RESIZE_HORIZONTAL,
eCSSKeyword_vertical, NS_STYLE_RESIZE_VERTICAL,
eCSSKeyword_UNKNOWN,-1
};
const PRInt32 nsCSSProps::kSpeakKTable[] = {
eCSSKeyword_none, NS_STYLE_SPEAK_NONE,
eCSSKeyword_normal, NS_STYLE_SPEAK_NORMAL,

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

@ -306,6 +306,7 @@ public:
static const PRInt32 kPositionKTable[];
static const PRInt32 kRadialGradientShapeKTable[];
static const PRInt32 kRadialGradientSizeKTable[];
static const PRInt32 kResizeKTable[];
static const PRInt32 kSpeakKTable[];
static const PRInt32 kSpeakHeaderKTable[];
static const PRInt32 kSpeakNumeralKTable[];

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

@ -372,6 +372,7 @@ struct nsCSSDisplay : public nsCSSStruct {
nsCSSRect mClip;
nsCSSValue mOverflowX;
nsCSSValue mOverflowY;
nsCSSValue mResize;
nsCSSValue mPointerEvents;
nsCSSValue mVisibility;
nsCSSValue mOpacity;

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

@ -3074,6 +3074,19 @@ nsComputedDOMStyle::GetOverflowY(nsIDOMCSSValue** aValue)
return CallQueryInterface(val, aValue);
}
nsresult
nsComputedDOMStyle::GetResize(nsIDOMCSSValue** aValue)
{
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
val->SetIdent(nsCSSProps::ValueToKeywordEnum(GetStyleDisplay()->mResize,
nsCSSProps::kResizeKTable));
return CallQueryInterface(val, aValue);
}
nsresult
nsComputedDOMStyle::GetPageBreakAfter(nsIDOMCSSValue** aValue)
{
@ -4532,6 +4545,7 @@ nsComputedDOMStyle::GetQueryablePropertyMap(PRUint32* aLength)
COMPUTED_STYLE_MAP_ENTRY_LAYOUT(_moz_outline_radius_bottomRight,OutlineRadiusBottomRight),
COMPUTED_STYLE_MAP_ENTRY_LAYOUT(_moz_outline_radius_topLeft, OutlineRadiusTopLeft),
COMPUTED_STYLE_MAP_ENTRY_LAYOUT(_moz_outline_radius_topRight, OutlineRadiusTopRight),
COMPUTED_STYLE_MAP_ENTRY(resize, Resize),
COMPUTED_STYLE_MAP_ENTRY(stack_sizing, StackSizing),
COMPUTED_STYLE_MAP_ENTRY(_moz_tab_size, MozTabSize),
COMPUTED_STYLE_MAP_ENTRY_LAYOUT(_moz_transform, MozTransform),

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

@ -308,6 +308,7 @@ private:
nsresult GetOverflow(nsIDOMCSSValue** aValue);
nsresult GetOverflowX(nsIDOMCSSValue** aValue);
nsresult GetOverflowY(nsIDOMCSSValue** aValue);
nsresult GetResize(nsIDOMCSSValue** aValue);
nsresult GetPageBreakAfter(nsIDOMCSSValue** aValue);
nsresult GetPageBreakBefore(nsIDOMCSSValue** aValue);
nsresult GetMozTransform(nsIDOMCSSValue** aValue);

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

@ -3984,6 +3984,10 @@ nsRuleNode::ComputeDisplayData(void* aStartStruct,
display->mOverflowY = NS_STYLE_OVERFLOW_AUTO;
}
SetDiscrete(displayData.mResize, display->mResize, canStoreInRuleTree,
SETDSC_ENUMERATED, parentDisplay->mResize,
NS_STYLE_RESIZE_NONE, 0, 0, 0, 0);
// clip property: length, auto, inherit
if (eCSSUnit_Inherit == displayData.mClip.mTop.GetUnit()) { // if one is inherit, they all are
canStoreInRuleTree = PR_FALSE;

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

@ -1806,6 +1806,7 @@ nsStyleDisplay::nsStyleDisplay()
mBreakAfter = PR_FALSE;
mOverflowX = NS_STYLE_OVERFLOW_VISIBLE;
mOverflowY = NS_STYLE_OVERFLOW_VISIBLE;
mResize = NS_STYLE_RESIZE_NONE;
mClipFlags = NS_STYLE_CLIP_AUTO;
mClip.SetRect(0,0,0,0);
mOpacity = 1.0f;
@ -1841,6 +1842,7 @@ nsStyleDisplay::nsStyleDisplay(const nsStyleDisplay& aSource)
mBreakAfter = aSource.mBreakAfter;
mOverflowX = aSource.mOverflowX;
mOverflowY = aSource.mOverflowY;
mResize = aSource.mResize;
mClipFlags = aSource.mClipFlags;
mClip = aSource.mClip;
mOpacity = aSource.mOpacity;
@ -1864,7 +1866,8 @@ nsChangeHint nsStyleDisplay::CalcDifference(const nsStyleDisplay& aOther) const
|| mDisplay != aOther.mDisplay
|| (mFloats == NS_STYLE_FLOAT_NONE) != (aOther.mFloats == NS_STYLE_FLOAT_NONE)
|| mOverflowX != aOther.mOverflowX
|| mOverflowY != aOther.mOverflowY)
|| mOverflowY != aOther.mOverflowY
|| mResize != aOther.mResize)
NS_UpdateHint(hint, nsChangeHint_ReconstructFrame);
if (mFloats != aOther.mFloats) {

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

@ -1314,6 +1314,7 @@ struct nsStyleDisplay {
PRPackedBool mBreakAfter; // [reset]
PRUint8 mOverflowX; // [reset] see nsStyleConsts.h
PRUint8 mOverflowY; // [reset] see nsStyleConsts.h
PRUint8 mResize; // [reset] see nsStyleConsts.h
PRUint8 mClipFlags; // [reset] see nsStyleConsts.h
PRPackedBool mTransformPresent; // [reset] Whether there is a -moz-transform.
nsStyleTransformMatrix mTransform; // [reset] The stored transform matrix

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

@ -535,6 +535,15 @@ var gCSSProperties = {
other_values: [ "1px", "3em" ],
invalid_values: []
},
"-moz-resize": {
domProp: "MozResize",
inherited: false,
type: CSS_TYPE_LONGHAND,
prerequisites: { "display": "block", "overflow": "auto" },
initial_values: [ "none" ],
other_values: [ "both", "horizontal", "vertical" ],
invalid_values: []
},
"-moz-tab-size": {
domProp: "MozTabSize",
inherited: true,