mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 251162. Add -moz-column-gap to the style system. r+sr=dbaron
This commit is contained in:
parent
567507020e
commit
e0a7bb0095
@ -4263,6 +4263,11 @@ nsRuleNode::ComputeColumnData(nsStyleStruct* aStartStruct,
|
||||
column->mColumnWidth, parent->mColumnWidth, SETCOORD_LAH,
|
||||
aContext, mPresContext, inherited);
|
||||
|
||||
// column-gap: length, percentage, inherit
|
||||
SetCoord(columnData.mColumnGap,
|
||||
column->mColumnGap, parent->mColumnGap, SETCOORD_LPH,
|
||||
aContext, mPresContext, inherited);
|
||||
|
||||
// column-count: auto, integer, inherit
|
||||
if (eCSSUnit_Auto == columnData.mColumnCount.GetUnit()) {
|
||||
column->mColumnCount = NS_STYLE_COLUMN_COUNT_AUTO;
|
||||
|
@ -833,6 +833,8 @@ void nsStyleContext::DumpRegressionData(nsIPresContext* aPresContext, FILE* out,
|
||||
fprintf(out, "<column data=\"%d ",
|
||||
(int)column->mColumnCount);
|
||||
column->mColumnWidth.ToString(str);
|
||||
fprintf(out, "%s ", NS_ConvertUCS2toUTF8(str).get());
|
||||
column->mColumnGap.ToString(str);
|
||||
fprintf(out, "%s", NS_ConvertUCS2toUTF8(str).get());
|
||||
fprintf(out, "\" />\n");
|
||||
|
||||
|
@ -4122,6 +4122,8 @@ PRBool CSSParserImpl::ParseSingleValueProperty(nsresult& aErrorCode,
|
||||
return ParsePositiveVariant(aErrorCode, aValue, VARIANT_AHI, nsnull);
|
||||
case eCSSProperty__moz_column_width:
|
||||
return ParseVariant(aErrorCode, aValue, VARIANT_AHL, nsnull);
|
||||
case eCSSProperty__moz_column_gap:
|
||||
return ParseVariant(aErrorCode, aValue, VARIANT_HLP, nsnull);
|
||||
#ifdef ENABLE_OUTLINE
|
||||
case eCSSProperty__moz_outline_radius_topLeft:
|
||||
case eCSSProperty__moz_outline_radius_topRight:
|
||||
|
@ -1161,7 +1161,8 @@ nsCSSColumn::nsCSSColumn(void)
|
||||
}
|
||||
|
||||
nsCSSColumn::nsCSSColumn(const nsCSSColumn& aCopy)
|
||||
: mColumnCount(aCopy.mColumnCount), mColumnWidth(aCopy.mColumnWidth)
|
||||
: mColumnCount(aCopy.mColumnCount), mColumnWidth(aCopy.mColumnWidth),
|
||||
mColumnGap(aCopy.mColumnGap)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsCSSColumn);
|
||||
}
|
||||
@ -1179,6 +1180,7 @@ void nsCSSColumn::List(FILE* out, PRInt32 aIndent) const
|
||||
nsAutoString buffer;
|
||||
|
||||
mColumnWidth.AppendToString(buffer, eCSSProperty__moz_column_width);
|
||||
mColumnGap.AppendToString(buffer, eCSSProperty__moz_column_gap);
|
||||
mColumnCount.AppendToString(buffer, eCSSProperty__moz_column_count);
|
||||
fputs(NS_LossyConvertUCS2toASCII(buffer).get(), out);
|
||||
}
|
||||
|
@ -518,6 +518,7 @@ struct nsCSSColumn : public nsCSSStruct {
|
||||
|
||||
nsCSSValue mColumnCount;
|
||||
nsCSSValue mColumnWidth;
|
||||
nsCSSValue mColumnGap;
|
||||
};
|
||||
|
||||
struct nsRuleDataColumn : public nsCSSColumn {
|
||||
|
@ -570,6 +570,38 @@ nsComputedDOMStyle::GetColumnWidth(nsIFrame *aFrame,
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetColumnGap(nsIFrame *aFrame,
|
||||
nsIDOMCSSValue** aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleColumn* column = nsnull;
|
||||
GetStyleData(eStyleStruct_Column, (const nsStyleStruct*&)column, aFrame);
|
||||
|
||||
if (column) {
|
||||
switch (column->mColumnGap.GetUnit()) {
|
||||
case eStyleUnit_Coord:
|
||||
val->SetTwips(column->mColumnGap.GetCoordValue());
|
||||
break;
|
||||
case eStyleUnit_Percent:
|
||||
if (aFrame) {
|
||||
val->SetTwips(column->mColumnGap.GetPercentValue()*aFrame->GetSize().width);
|
||||
} else {
|
||||
val->SetPercent(column->mColumnGap.GetPercentValue());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Bad column width unit");
|
||||
val->SetTwips(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetFontFamily(nsIFrame *aFrame,
|
||||
nsIDOMCSSValue** aValue)
|
||||
@ -3575,6 +3607,7 @@ nsComputedDOMStyle::GetQueryablePropertyMap(PRUint32* aLength)
|
||||
COMPUTED_STYLE_MAP_ENTRY(box_sizing, BoxSizing),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_count, ColumnCount),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_width, ColumnWidth),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_gap, ColumnGap),
|
||||
COMPUTED_STYLE_MAP_ENTRY(float_edge, FloatEdge),
|
||||
COMPUTED_STYLE_MAP_ENTRY(image_region, ImageRegion),
|
||||
COMPUTED_STYLE_MAP_ENTRY(opacity, Opacity),
|
||||
|
@ -283,6 +283,7 @@ private:
|
||||
/* Column properties */
|
||||
nsresult GetColumnCount(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
nsresult GetColumnWidth(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
nsresult GetColumnGap(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
|
||||
nsROCSSPrimitiveValue* GetROCSSPrimitiveValue();
|
||||
nsDOMCSSValueList* GetROCSSValueList(PRBool aCommaDelimited);
|
||||
|
@ -332,6 +332,7 @@ CSS_PROP_DISPLAY(clip, clip, Clip, Display, mClip, eCSSType_Rect, PR_FALSE, nsnu
|
||||
CSS_PROP_COLOR(color, color, Color, Color, mColor, eCSSType_Value, PR_FALSE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-count, _moz_column_count, MozColumnCount, Column, mColumnCount, eCSSType_Value, PR_FALSE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-width, _moz_column_width, MozColumnWidth, Column, mColumnWidth, eCSSType_Value, PR_TRUE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-gap, _moz_column_gap, MozColumnGap, Column, mColumnGap, eCSSType_Value, PR_TRUE, nsnull)
|
||||
CSS_PROP_CONTENT(content, content, Content, Content, mContent, eCSSType_ValueList, PR_FALSE, kContentKTable)
|
||||
CSS_PROP_NOTIMPLEMENTED(counter-increment, counter_increment, CounterIncrement)
|
||||
CSS_PROP_NOTIMPLEMENTED(counter-reset, counter_reset, CounterReset)
|
||||
|
@ -1106,7 +1106,8 @@ struct nsStyleColumn : public nsStyleStruct {
|
||||
nsChangeHint CalcDifference(const nsStyleColumn& aOther) const;
|
||||
|
||||
PRUint32 mColumnCount; // [reset] see nsStyleConsts.h
|
||||
nsStyleCoord mColumnWidth; // [reset] see nsStyleConsts.h
|
||||
nsStyleCoord mColumnWidth; // [reset]
|
||||
nsStyleCoord mColumnGap; // [reset]
|
||||
};
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
|
@ -734,6 +734,7 @@ nsStyleColumn::nsStyleColumn()
|
||||
{
|
||||
mColumnCount = NS_STYLE_COLUMN_COUNT_AUTO;
|
||||
mColumnWidth.SetAutoValue();
|
||||
mColumnGap.SetCoordValue(0);
|
||||
}
|
||||
|
||||
nsStyleColumn::~nsStyleColumn()
|
||||
@ -747,10 +748,18 @@ nsStyleColumn::nsStyleColumn(const nsStyleColumn& aSource)
|
||||
|
||||
nsChangeHint nsStyleColumn::CalcDifference(const nsStyleColumn& aOther) const
|
||||
{
|
||||
if (mColumnWidth == aOther.mColumnWidth &&
|
||||
mColumnCount == aOther.mColumnCount)
|
||||
return NS_STYLE_HINT_NONE;
|
||||
if ((mColumnWidth.GetUnit() == eStyleUnit_Auto)
|
||||
!= (aOther.mColumnWidth.GetUnit() == eStyleUnit_Auto) ||
|
||||
(mColumnCount == NS_STYLE_COLUMN_COUNT_AUTO)
|
||||
!= (aOther.mColumnCount == NS_STYLE_COLUMN_COUNT_AUTO))
|
||||
return nsChangeHint_ReconstructFrame;
|
||||
|
||||
if (mColumnCount != aOther.mColumnCount ||
|
||||
mColumnWidth != aOther.mColumnWidth ||
|
||||
mColumnGap != aOther.mColumnGap)
|
||||
return nsChangeHint_ReflowFrame;
|
||||
|
||||
return NS_STYLE_HINT_NONE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
|
@ -484,6 +484,9 @@ interface nsIDOMNSCSS2Properties : nsIDOMCSS2Properties
|
||||
attribute DOMString MozColumnWidth;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozColumnGap;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
attribute DOMString MozCounterIncrement;
|
||||
// raises(DOMException) on setting
|
||||
|
||||
|
@ -4122,6 +4122,8 @@ PRBool CSSParserImpl::ParseSingleValueProperty(nsresult& aErrorCode,
|
||||
return ParsePositiveVariant(aErrorCode, aValue, VARIANT_AHI, nsnull);
|
||||
case eCSSProperty__moz_column_width:
|
||||
return ParseVariant(aErrorCode, aValue, VARIANT_AHL, nsnull);
|
||||
case eCSSProperty__moz_column_gap:
|
||||
return ParseVariant(aErrorCode, aValue, VARIANT_HLP, nsnull);
|
||||
#ifdef ENABLE_OUTLINE
|
||||
case eCSSProperty__moz_outline_radius_topLeft:
|
||||
case eCSSProperty__moz_outline_radius_topRight:
|
||||
|
@ -332,6 +332,7 @@ CSS_PROP_DISPLAY(clip, clip, Clip, Display, mClip, eCSSType_Rect, PR_FALSE, nsnu
|
||||
CSS_PROP_COLOR(color, color, Color, Color, mColor, eCSSType_Value, PR_FALSE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-count, _moz_column_count, MozColumnCount, Column, mColumnCount, eCSSType_Value, PR_FALSE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-width, _moz_column_width, MozColumnWidth, Column, mColumnWidth, eCSSType_Value, PR_TRUE, nsnull)
|
||||
CSS_PROP_COLUMN(-moz-column-gap, _moz_column_gap, MozColumnGap, Column, mColumnGap, eCSSType_Value, PR_TRUE, nsnull)
|
||||
CSS_PROP_CONTENT(content, content, Content, Content, mContent, eCSSType_ValueList, PR_FALSE, kContentKTable)
|
||||
CSS_PROP_NOTIMPLEMENTED(counter-increment, counter_increment, CounterIncrement)
|
||||
CSS_PROP_NOTIMPLEMENTED(counter-reset, counter_reset, CounterReset)
|
||||
|
@ -1161,7 +1161,8 @@ nsCSSColumn::nsCSSColumn(void)
|
||||
}
|
||||
|
||||
nsCSSColumn::nsCSSColumn(const nsCSSColumn& aCopy)
|
||||
: mColumnCount(aCopy.mColumnCount), mColumnWidth(aCopy.mColumnWidth)
|
||||
: mColumnCount(aCopy.mColumnCount), mColumnWidth(aCopy.mColumnWidth),
|
||||
mColumnGap(aCopy.mColumnGap)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsCSSColumn);
|
||||
}
|
||||
@ -1179,6 +1180,7 @@ void nsCSSColumn::List(FILE* out, PRInt32 aIndent) const
|
||||
nsAutoString buffer;
|
||||
|
||||
mColumnWidth.AppendToString(buffer, eCSSProperty__moz_column_width);
|
||||
mColumnGap.AppendToString(buffer, eCSSProperty__moz_column_gap);
|
||||
mColumnCount.AppendToString(buffer, eCSSProperty__moz_column_count);
|
||||
fputs(NS_LossyConvertUCS2toASCII(buffer).get(), out);
|
||||
}
|
||||
|
@ -518,6 +518,7 @@ struct nsCSSColumn : public nsCSSStruct {
|
||||
|
||||
nsCSSValue mColumnCount;
|
||||
nsCSSValue mColumnWidth;
|
||||
nsCSSValue mColumnGap;
|
||||
};
|
||||
|
||||
struct nsRuleDataColumn : public nsCSSColumn {
|
||||
|
@ -570,6 +570,38 @@ nsComputedDOMStyle::GetColumnWidth(nsIFrame *aFrame,
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetColumnGap(nsIFrame *aFrame,
|
||||
nsIDOMCSSValue** aValue)
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = GetROCSSPrimitiveValue();
|
||||
NS_ENSURE_TRUE(val, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
const nsStyleColumn* column = nsnull;
|
||||
GetStyleData(eStyleStruct_Column, (const nsStyleStruct*&)column, aFrame);
|
||||
|
||||
if (column) {
|
||||
switch (column->mColumnGap.GetUnit()) {
|
||||
case eStyleUnit_Coord:
|
||||
val->SetTwips(column->mColumnGap.GetCoordValue());
|
||||
break;
|
||||
case eStyleUnit_Percent:
|
||||
if (aFrame) {
|
||||
val->SetTwips(column->mColumnGap.GetPercentValue()*aFrame->GetSize().width);
|
||||
} else {
|
||||
val->SetPercent(column->mColumnGap.GetPercentValue());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Bad column width unit");
|
||||
val->SetTwips(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return CallQueryInterface(val, aValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsComputedDOMStyle::GetFontFamily(nsIFrame *aFrame,
|
||||
nsIDOMCSSValue** aValue)
|
||||
@ -3575,6 +3607,7 @@ nsComputedDOMStyle::GetQueryablePropertyMap(PRUint32* aLength)
|
||||
COMPUTED_STYLE_MAP_ENTRY(box_sizing, BoxSizing),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_count, ColumnCount),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_width, ColumnWidth),
|
||||
COMPUTED_STYLE_MAP_ENTRY(_moz_column_gap, ColumnGap),
|
||||
COMPUTED_STYLE_MAP_ENTRY(float_edge, FloatEdge),
|
||||
COMPUTED_STYLE_MAP_ENTRY(image_region, ImageRegion),
|
||||
COMPUTED_STYLE_MAP_ENTRY(opacity, Opacity),
|
||||
|
@ -283,6 +283,7 @@ private:
|
||||
/* Column properties */
|
||||
nsresult GetColumnCount(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
nsresult GetColumnWidth(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
nsresult GetColumnGap(nsIFrame *aFrame, nsIDOMCSSValue** aValue);
|
||||
|
||||
nsROCSSPrimitiveValue* GetROCSSPrimitiveValue();
|
||||
nsDOMCSSValueList* GetROCSSValueList(PRBool aCommaDelimited);
|
||||
|
@ -4263,6 +4263,11 @@ nsRuleNode::ComputeColumnData(nsStyleStruct* aStartStruct,
|
||||
column->mColumnWidth, parent->mColumnWidth, SETCOORD_LAH,
|
||||
aContext, mPresContext, inherited);
|
||||
|
||||
// column-gap: length, percentage, inherit
|
||||
SetCoord(columnData.mColumnGap,
|
||||
column->mColumnGap, parent->mColumnGap, SETCOORD_LPH,
|
||||
aContext, mPresContext, inherited);
|
||||
|
||||
// column-count: auto, integer, inherit
|
||||
if (eCSSUnit_Auto == columnData.mColumnCount.GetUnit()) {
|
||||
column->mColumnCount = NS_STYLE_COLUMN_COUNT_AUTO;
|
||||
|
@ -833,6 +833,8 @@ void nsStyleContext::DumpRegressionData(nsIPresContext* aPresContext, FILE* out,
|
||||
fprintf(out, "<column data=\"%d ",
|
||||
(int)column->mColumnCount);
|
||||
column->mColumnWidth.ToString(str);
|
||||
fprintf(out, "%s ", NS_ConvertUCS2toUTF8(str).get());
|
||||
column->mColumnGap.ToString(str);
|
||||
fprintf(out, "%s", NS_ConvertUCS2toUTF8(str).get());
|
||||
fprintf(out, "\" />\n");
|
||||
|
||||
|
@ -734,6 +734,7 @@ nsStyleColumn::nsStyleColumn()
|
||||
{
|
||||
mColumnCount = NS_STYLE_COLUMN_COUNT_AUTO;
|
||||
mColumnWidth.SetAutoValue();
|
||||
mColumnGap.SetCoordValue(0);
|
||||
}
|
||||
|
||||
nsStyleColumn::~nsStyleColumn()
|
||||
@ -747,10 +748,18 @@ nsStyleColumn::nsStyleColumn(const nsStyleColumn& aSource)
|
||||
|
||||
nsChangeHint nsStyleColumn::CalcDifference(const nsStyleColumn& aOther) const
|
||||
{
|
||||
if (mColumnWidth == aOther.mColumnWidth &&
|
||||
mColumnCount == aOther.mColumnCount)
|
||||
return NS_STYLE_HINT_NONE;
|
||||
if ((mColumnWidth.GetUnit() == eStyleUnit_Auto)
|
||||
!= (aOther.mColumnWidth.GetUnit() == eStyleUnit_Auto) ||
|
||||
(mColumnCount == NS_STYLE_COLUMN_COUNT_AUTO)
|
||||
!= (aOther.mColumnCount == NS_STYLE_COLUMN_COUNT_AUTO))
|
||||
return nsChangeHint_ReconstructFrame;
|
||||
|
||||
if (mColumnCount != aOther.mColumnCount ||
|
||||
mColumnWidth != aOther.mColumnWidth ||
|
||||
mColumnGap != aOther.mColumnGap)
|
||||
return nsChangeHint_ReflowFrame;
|
||||
|
||||
return NS_STYLE_HINT_NONE;
|
||||
}
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
|
@ -1106,7 +1106,8 @@ struct nsStyleColumn : public nsStyleStruct {
|
||||
nsChangeHint CalcDifference(const nsStyleColumn& aOther) const;
|
||||
|
||||
PRUint32 mColumnCount; // [reset] see nsStyleConsts.h
|
||||
nsStyleCoord mColumnWidth; // [reset] see nsStyleConsts.h
|
||||
nsStyleCoord mColumnWidth; // [reset]
|
||||
nsStyleCoord mColumnGap; // [reset]
|
||||
};
|
||||
|
||||
#ifdef MOZ_SVG
|
||||
|
Loading…
Reference in New Issue
Block a user