diff --git a/content/base/src/nsRuleNode.cpp b/content/base/src/nsRuleNode.cpp index 1416d8c104bf..971ddfc08e54 100644 --- a/content/base/src/nsRuleNode.cpp +++ b/content/base/src/nsRuleNode.cpp @@ -186,7 +186,7 @@ nsString& Unquote(nsString& aString) } nscoord CalcLength(const nsCSSValue& aValue, - nsFont* aFont, + const nsFont* aFont, nsIStyleContext* aStyleContext, nsIPresContext* aPresContext, PRBool& aInherited) @@ -200,18 +200,18 @@ nscoord CalcLength(const nsCSSValue& aValue, case eCSSUnit_EM: case eCSSUnit_Char: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; return NSToCoordRound(aValue.GetFloatValue() * (float)font->size); // XXX scale against font metrics height instead? } case eCSSUnit_EN: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; return NSToCoordRound((aValue.GetFloatValue() * (float)font->size) / 2.0f); } case eCSSUnit_XHeight: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; nsIFontMetrics* fm; aPresContext->GetMetricsFor(*font, &fm); NS_ASSERTION(nsnull != fm, "can't get font metrics"); @@ -228,7 +228,7 @@ nscoord CalcLength(const nsCSSValue& aValue, case eCSSUnit_CapHeight: { NS_NOTYETIMPLEMENTED("cap height unit"); aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; nscoord capHeight = ((font->size / 3) * 2); // XXX HACK! return NSToCoordRound(aValue.GetFloatValue() * (float)capHeight); } @@ -255,7 +255,6 @@ nscoord CalcLength(const nsCSSValue& aValue, #define SETCOORD_LH (SETCOORD_LENGTH | SETCOORD_INHERIT) #define SETCOORD_AH (SETCOORD_AUTO | SETCOORD_INHERIT) #define SETCOORD_LPH (SETCOORD_LP | SETCOORD_INHERIT) -#define SETCOORD_LPFHN (SETCOORD_LPH | SETCOORD_FACTOR | SETCOORD_NORMAL) #define SETCOORD_LPAH (SETCOORD_LP | SETCOORD_AH) #define SETCOORD_LPEH (SETCOORD_LP | SETCOORD_ENUMERATED | SETCOORD_INHERIT) #define SETCOORD_LE (SETCOORD_LENGTH | SETCOORD_ENUMERATED) @@ -1631,8 +1630,9 @@ nsRuleNode::gComputeStyleDataFn[] = { static void SetFont(nsIPresContext* aPresContext, nsIStyleContext* aContext, nscoord aMinFontSize, PRBool aUseDocumentFonts, PRBool aChromeOverride, - PRBool aIsGeneric, const nsCSSFont& aFontData, const nsFont& aDefaultFont, - nsStyleFont* aParentFont, nsStyleFont* aFont, PRBool& aInherited) + PRBool aIsGeneric, const nsCSSFont& aFontData, + const nsFont& aDefaultFont, const nsStyleFont* aParentFont, + nsStyleFont* aFont, PRBool& aInherited) { nsFont defaultVariableFont, defaultFixedFont; aPresContext->GetDefaultFont(kPresContext_DefaultVariableFont_ID, defaultVariableFont); @@ -2032,7 +2032,7 @@ nsRuleNode::ComputeFontData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSFont& fontData = NS_STATIC_CAST(const nsCSSFont&, aData); nsStyleFont* font = nsnull; - nsStyleFont* parentFont = font; + const nsStyleFont* parentFont = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2045,7 +2045,8 @@ nsRuleNode::ComputeFontData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentFont = (nsStyleFont*)parentContext->GetStyleData(eStyleStruct_Font); + parentFont = NS_STATIC_CAST(const nsStyleFont*, + parentContext->GetStyleData(eStyleStruct_Font)); if (parentFont) font = new (mPresContext) nsStyleFont(*parentFont); } @@ -2161,7 +2162,7 @@ nsRuleNode::ComputeTextData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSText& textData = NS_STATIC_CAST(const nsCSSText&, aData); nsStyleText* text = nsnull; - nsStyleText* parentText = text; + const nsStyleText* parentText = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2174,29 +2175,32 @@ nsRuleNode::ComputeTextData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentText = (nsStyleText*)parentContext->GetStyleData(eStyleStruct_Text); - if (parentText) { + parentText = NS_STATIC_CAST(const nsStyleText*, + parentContext->GetStyleData(eStyleStruct_Text)); + if (parentText) text = new (mPresContext) nsStyleText(*parentText); - - // Percentage line heights are not inherited. We need to change the value - // of line-height to inherit. - nsStyleUnit unit = text->mLineHeight.GetUnit(); - if (unit != eStyleUnit_Normal && unit != eStyleUnit_Factor && unit != eStyleUnit_Coord) - text->mLineHeight.SetInheritValue(); - } } } if (!text) - text = parentText = new (mPresContext) nsStyleText(); + parentText = text = new (mPresContext) nsStyleText(); // letter-spacing: normal, length, inherit SetCoord(textData.mLetterSpacing, text->mLetterSpacing, parentText->mLetterSpacing, SETCOORD_LH | SETCOORD_NORMAL, aContext, mPresContext, inherited); // line-height: normal, number, length, percent, inherit - SetCoord(textData.mLineHeight, text->mLineHeight, parentText->mLineHeight, - SETCOORD_LPFHN, aContext, mPresContext, inherited); + if (eCSSUnit_Percent == textData.mLineHeight.GetUnit()) { + aInherited = PR_TRUE; + const nsStyleFont* parentFont = NS_STATIC_CAST(const nsStyleFont*, + parentContext->GetStyleData(eStyleStruct_Font)); + text->mLineHeight.SetCoordValue((nscoord)((float)(parentFont->mSize) * + textData.mLineHeight.GetPercentValue())); + } else + SetCoord(textData.mLineHeight, text->mLineHeight, parentText->mLineHeight, + SETCOORD_LH | SETCOORD_FACTOR | SETCOORD_NORMAL, + aContext, mPresContext, inherited); + // text-align: enum, string, inherit if (eCSSUnit_Enumerated == textData.mTextAlign.GetUnit()) { @@ -2345,7 +2349,7 @@ nsRuleNode::ComputeUIData(nsStyleStruct* aStartData, const nsCSSStruct& aData, const nsCSSUserInterface& uiData = NS_STATIC_CAST(const nsCSSUserInterface&, aData); nsStyleUserInterface* ui = nsnull; - nsStyleUserInterface* parentUI = ui; + const nsStyleUserInterface* parentUI = nsnull; PRBool inherited = aInherited; if (aStartData) @@ -2358,14 +2362,15 @@ nsRuleNode::ComputeUIData(nsStyleStruct* aStartData, const nsCSSStruct& aData, // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentUI = (nsStyleUserInterface*)parentContext->GetStyleData(eStyleStruct_UserInterface); + parentUI = NS_STATIC_CAST(const nsStyleUserInterface*, + parentContext->GetStyleData(eStyleStruct_UserInterface)); if (parentUI) ui = new (mPresContext) nsStyleUserInterface(*parentUI); } } if (!ui) - ui = parentUI = new (mPresContext) nsStyleUserInterface(); + parentUI = ui = new (mPresContext) nsStyleUserInterface(); // cursor: enum, auto, url, inherit nsCSSValueList* list = uiData.mCursor; @@ -2460,10 +2465,11 @@ nsRuleNode::ComputeUIResetData(nsStyleStruct* aStartData, const nsCSSStruct& aDa ui = new (mPresContext) nsStyleUIReset(*NS_STATIC_CAST(nsStyleUIReset*, aStartData)); else ui = new (mPresContext) nsStyleUIReset(); - nsStyleUIReset* parentUI = ui; + const nsStyleUIReset* parentUI = ui; if (parentContext) - parentUI = (nsStyleUIReset*)parentContext->GetStyleData(eStyleStruct_UIReset); + parentUI = NS_STATIC_CAST(const nsStyleUIReset*, + parentContext->GetStyleData(eStyleStruct_UIReset)); PRBool inherited = aInherited; // user-select: none, enum, inherit @@ -2543,10 +2549,11 @@ nsRuleNode::ComputeDisplayData(nsStyleStruct* aStartStruct, const nsCSSStruct& a display = new (mPresContext) nsStyleDisplay(*NS_STATIC_CAST(nsStyleDisplay*, aStartStruct)); else display = new (mPresContext) nsStyleDisplay(); - nsStyleDisplay* parentDisplay = display; + const nsStyleDisplay* parentDisplay = display; if (parentContext) - parentDisplay = (nsStyleDisplay*)parentContext->GetStyleData(eStyleStruct_Display); + parentDisplay = NS_STATIC_CAST(const nsStyleDisplay*, + parentContext->GetStyleData(eStyleStruct_Display)); PRBool inherited = aInherited; // display: enum, none, inherit @@ -2751,7 +2758,7 @@ nsRuleNode::ComputeVisibilityData(nsStyleStruct* aStartStruct, const nsCSSStruct const nsCSSDisplay& displayData = NS_STATIC_CAST(const nsCSSDisplay&, aData); nsStyleVisibility* visibility = nsnull; - nsStyleVisibility* parentVisibility = visibility; + const nsStyleVisibility* parentVisibility = visibility; PRBool inherited = aInherited; if (aStartStruct) @@ -2764,14 +2771,15 @@ nsRuleNode::ComputeVisibilityData(nsStyleStruct* aStartStruct, const nsCSSStruct // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentVisibility = (nsStyleVisibility*)parentContext->GetStyleData(eStyleStruct_Visibility); + parentVisibility = NS_STATIC_CAST(const nsStyleVisibility*, + parentContext->GetStyleData(eStyleStruct_Visibility)); if (parentVisibility) visibility = new (mPresContext) nsStyleVisibility(*parentVisibility); } } if (!visibility) - visibility = parentVisibility = new (mPresContext) nsStyleVisibility(mPresContext); + parentVisibility = visibility = new (mPresContext) nsStyleVisibility(mPresContext); // opacity: factor, percent, inherit if (eCSSUnit_Percent == displayData.mOpacity.GetUnit()) { @@ -2845,7 +2853,7 @@ nsRuleNode::ComputeColorData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa const nsCSSColor& colorData = NS_STATIC_CAST(const nsCSSColor&, aData); nsStyleColor* color = nsnull; - nsStyleColor* parentColor = color; + const nsStyleColor* parentColor = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2858,14 +2866,15 @@ nsRuleNode::ComputeColorData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentColor = (nsStyleColor*)parentContext->GetStyleData(eStyleStruct_Color); + parentColor = NS_STATIC_CAST(const nsStyleColor*, + parentContext->GetStyleData(eStyleStruct_Color)); if (parentColor) color = new (mPresContext) nsStyleColor(*parentColor); } } if (!color) - color = parentColor = new (mPresContext) nsStyleColor(mPresContext); + parentColor = color = new (mPresContext) nsStyleColor(mPresContext); // color: color, string, inherit SetColor(colorData.mColor, parentColor->mColor, mPresContext, color->mColor, inherited); @@ -2905,10 +2914,11 @@ nsRuleNode::ComputeBackgroundData(nsStyleStruct* aStartStruct, const nsCSSStruct bg = new (mPresContext) nsStyleBackground(*NS_STATIC_CAST(nsStyleBackground*, aStartStruct)); else bg = new (mPresContext) nsStyleBackground(mPresContext); - nsStyleBackground* parentBG = bg; + const nsStyleBackground* parentBG = bg; if (parentContext) - parentBG = (nsStyleBackground*)parentContext->GetStyleData(eStyleStruct_Background); + parentBG = NS_STATIC_CAST(const nsStyleBackground*, + parentContext->GetStyleData(eStyleStruct_Background)); PRBool inherited = aInherited; // background-color: color, string, enum (flags), inherit @@ -3063,10 +3073,11 @@ nsRuleNode::ComputeMarginData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD margin = new (mPresContext) nsStyleMargin(*NS_STATIC_CAST(nsStyleMargin*, aStartStruct)); else margin = new (mPresContext) nsStyleMargin(); - nsStyleMargin* parentMargin = margin; + const nsStyleMargin* parentMargin = margin; if (parentContext) - parentMargin = (nsStyleMargin*)parentContext->GetStyleData(eStyleStruct_Margin); + parentMargin = NS_STATIC_CAST(const nsStyleMargin*, + parentContext->GetStyleData(eStyleStruct_Margin)); PRBool inherited = aInherited; // margin: length, percent, auto, inherit @@ -3128,9 +3139,10 @@ nsRuleNode::ComputeBorderData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD else border = new (mPresContext) nsStyleBorder(mPresContext); - nsStyleBorder* parentBorder = border; + const nsStyleBorder* parentBorder = border; if (parentContext) - parentBorder = (nsStyleBorder*)parentContext->GetStyleData(eStyleStruct_Border); + parentBorder = NS_STATIC_CAST(const nsStyleBorder*, + parentContext->GetStyleData(eStyleStruct_Border)); PRBool inherited = aInherited; // border-size: length, enum, inherit @@ -3375,9 +3387,10 @@ nsRuleNode::ComputePaddingData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else padding = new (mPresContext) nsStylePadding(); - nsStylePadding* parentPadding = padding; + const nsStylePadding* parentPadding = padding; if (parentContext) - parentPadding = (nsStylePadding*)parentContext->GetStyleData(eStyleStruct_Padding); + parentPadding = NS_STATIC_CAST(const nsStylePadding*, + parentContext->GetStyleData(eStyleStruct_Padding)); PRBool inherited = aInherited; // padding: length, percent, inherit @@ -3439,9 +3452,10 @@ nsRuleNode::ComputeOutlineData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else outline = new (mPresContext) nsStyleOutline(mPresContext); - nsStyleOutline* parentOutline = outline; + const nsStyleOutline* parentOutline = outline; if (parentContext) - parentOutline = (nsStyleOutline*)parentContext->GetStyleData(eStyleStruct_Outline); + parentOutline = NS_STATIC_CAST(const nsStyleOutline*, + parentContext->GetStyleData(eStyleStruct_Outline)); PRBool inherited = aInherited; // outline-width: length, enum, inherit @@ -3503,7 +3517,7 @@ nsRuleNode::ComputeListData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSList& listData = NS_STATIC_CAST(const nsCSSList&, aData); nsStyleList* list = nsnull; - nsStyleList* parentList = list; + const nsStyleList* parentList = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -3516,14 +3530,15 @@ nsRuleNode::ComputeListData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentList = (nsStyleList*)parentContext->GetStyleData(eStyleStruct_List); + parentList = NS_STATIC_CAST(const nsStyleList*, + parentContext->GetStyleData(eStyleStruct_List)); if (parentList) list = new (mPresContext) nsStyleList(*parentList); } } if (!list) - list = parentList = new (mPresContext) nsStyleList(); + parentList = list = new (mPresContext) nsStyleList(); // list-style-type: enum, none, inherit if (eCSSUnit_Enumerated == listData.mType.GetUnit()) { @@ -3594,9 +3609,10 @@ nsRuleNode::ComputePositionData(nsStyleStruct* aStartStruct, const nsCSSStruct& else pos = new (mPresContext) nsStylePosition(); - nsStylePosition* parentPos = pos; + const nsStylePosition* parentPos = pos; if (parentContext) - parentPos = (nsStylePosition*)parentContext->GetStyleData(eStyleStruct_Position); + parentPos = NS_STATIC_CAST(const nsStylePosition*, + parentContext->GetStyleData(eStyleStruct_Position)); PRBool inherited = aInherited; // box offsets: length, percent, auto, inherit @@ -3701,9 +3717,10 @@ nsRuleNode::ComputeTableData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa else table = new (mPresContext) nsStyleTable(); - nsStyleTable* parentTable = table; + const nsStyleTable* parentTable = table; if (parentContext) - parentTable = (nsStyleTable*)parentContext->GetStyleData(eStyleStruct_Table); + parentTable = NS_STATIC_CAST(const nsStyleTable*, + parentContext->GetStyleData(eStyleStruct_Table)); PRBool inherited = aInherited; // table-layout: auto, enum, inherit @@ -3763,7 +3780,7 @@ nsRuleNode::ComputeTableBorderData(nsStyleStruct* aStartStruct, const nsCSSStruc const nsCSSTable& tableData = NS_STATIC_CAST(const nsCSSTable&, aData); nsStyleTableBorder* table = nsnull; - nsStyleTableBorder* parentTable = table; + const nsStyleTableBorder* parentTable = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -3776,14 +3793,15 @@ nsRuleNode::ComputeTableBorderData(nsStyleStruct* aStartStruct, const nsCSSStruc // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentTable = (nsStyleTableBorder*)parentContext->GetStyleData(eStyleStruct_TableBorder); + parentTable = NS_STATIC_CAST(const nsStyleTableBorder*, + parentContext->GetStyleData(eStyleStruct_TableBorder)); if (parentTable) table = new (mPresContext) nsStyleTableBorder(*parentTable); } } if (!table) - table = parentTable = new (mPresContext) nsStyleTableBorder(mPresContext); + parentTable = table = new (mPresContext) nsStyleTableBorder(mPresContext); // border-collapse: enum, inherit if (eCSSUnit_Enumerated == tableData.mBorderCollapse.GetUnit()) { @@ -3867,9 +3885,10 @@ nsRuleNode::ComputeContentData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else content = new (mPresContext) nsStyleContent(); - nsStyleContent* parentContent = content; + const nsStyleContent* parentContent = content; if (parentContext) - parentContent = (nsStyleContent*)parentContext->GetStyleData(eStyleStruct_Content); + parentContent = NS_STATIC_CAST(const nsStyleContent*, + parentContext->GetStyleData(eStyleStruct_Content)); PRBool inherited = aInherited; // content: [string, url, counter, attr, enum]+, inherit @@ -4055,7 +4074,7 @@ nsRuleNode::ComputeQuotesData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD const nsCSSContent& contentData = NS_STATIC_CAST(const nsCSSContent&, aData); nsStyleQuotes* quotes = nsnull; - nsStyleQuotes* parentQuotes = quotes; + const nsStyleQuotes* parentQuotes = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -4068,14 +4087,15 @@ nsRuleNode::ComputeQuotesData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentQuotes = (nsStyleQuotes*)parentContext->GetStyleData(eStyleStruct_Quotes); + parentQuotes = NS_STATIC_CAST(const nsStyleQuotes*, + parentContext->GetStyleData(eStyleStruct_Quotes)); if (parentQuotes) quotes = new (mPresContext) nsStyleQuotes(*parentQuotes); } } if (!quotes) - quotes = parentQuotes = new (mPresContext) nsStyleQuotes(); + parentQuotes = quotes = new (mPresContext) nsStyleQuotes(); // quotes: [string string]+, none, inherit PRUint32 count; @@ -4155,10 +4175,11 @@ nsRuleNode::ComputeXULData(nsStyleStruct* aStartStruct, const nsCSSStruct& aData else xul = new (mPresContext) nsStyleXUL(); - nsStyleXUL* parentXUL = xul; + const nsStyleXUL* parentXUL = xul; if (parentContext) - parentXUL = (nsStyleXUL*)parentContext->GetStyleData(eStyleStruct_XUL); + parentXUL = NS_STATIC_CAST(const nsStyleXUL*, + parentContext->GetStyleData(eStyleStruct_XUL)); PRBool inherited = aInherited; diff --git a/layout/generic/nsHTMLReflowState.cpp b/layout/generic/nsHTMLReflowState.cpp index e5bc6a49be1a..1f1cd6aab4b1 100644 --- a/layout/generic/nsHTMLReflowState.cpp +++ b/layout/generic/nsHTMLReflowState.cpp @@ -2135,23 +2135,6 @@ nsHTMLReflowState::UseComputedHeight() return useComputedHeight; } -static nsIStyleContext* -GetNonInheritedLineHeightStyleContext(nsIStyleContext* aStyleContext) -{ - nsIStyleContext* parentSC; - parentSC = aStyleContext->GetParent(); - if (parentSC) { - const nsStyleText* text = (const nsStyleText*) - parentSC->GetStyleData(eStyleStruct_Text); - if (eStyleUnit_Inherit == text->mLineHeight.GetUnit()) { - nsIStyleContext* sc = GetNonInheritedLineHeightStyleContext(parentSC); - NS_RELEASE(parentSC); - return sc; - } - } - return parentSC; -} - static nscoord ComputeLineHeight(nsIRenderingContext* aRenderingContext, nsIStyleContext* aStyleContext) @@ -2168,30 +2151,16 @@ ComputeLineHeight(nsIRenderingContext* aRenderingContext, (const nsStyleVisibility*)aStyleContext->GetStyleData(eStyleStruct_Visibility); nsStyleUnit unit = text->mLineHeight.GetUnit(); - if (eStyleUnit_Inherit == unit) { - // Inherit parents line-height value - nsCOMPtr parentSC = - getter_AddRefs(GetNonInheritedLineHeightStyleContext(aStyleContext)); - if (parentSC) { - text = (const nsStyleText*) parentSC->GetStyleData(eStyleStruct_Text); - unit = text->mLineHeight.GetUnit(); - if (eStyleUnit_Percent == unit) { - // For percent, we inherit the computed value so update the - // font to use the parent's font not our font. - font = (const nsStyleFont*) parentSC->GetStyleData(eStyleStruct_Font); - } - } - } if (eStyleUnit_Coord == unit) { // For length values just use the pre-computed value lineHeight = text->mLineHeight.GetCoordValue(); } else { - // For "normal", factor or percentage units the computed value of - // the line-height property is found by multiplying the factor by - // the font's actual em height. For "normal" we use the - // font's normal line height (em height + leading). + // For "normal" or factor units the computed value of the + // line-height property is found by multiplying the factor by the + // font's actual em height. For "normal" we use the font's + // normal line height (em height + leading). nscoord emHeight = -1; nscoord normalLineHeight = -1; nsCOMPtr deviceContext; @@ -2212,10 +2181,8 @@ ComputeLineHeight(nsIRenderingContext* aRenderingContext, if (eStyleUnit_Factor == unit) { factor = text->mLineHeight.GetFactorValue(); } - else if (eStyleUnit_Percent == unit) { - factor = text->mLineHeight.GetPercentValue(); - } else { + NS_ASSERTION(eStyleUnit_Normal == unit, "bad unit"); factor = (((float) normalLineHeight) / PR_MAX(1, emHeight)); } diff --git a/layout/html/base/src/nsHTMLReflowState.cpp b/layout/html/base/src/nsHTMLReflowState.cpp index e5bc6a49be1a..1f1cd6aab4b1 100644 --- a/layout/html/base/src/nsHTMLReflowState.cpp +++ b/layout/html/base/src/nsHTMLReflowState.cpp @@ -2135,23 +2135,6 @@ nsHTMLReflowState::UseComputedHeight() return useComputedHeight; } -static nsIStyleContext* -GetNonInheritedLineHeightStyleContext(nsIStyleContext* aStyleContext) -{ - nsIStyleContext* parentSC; - parentSC = aStyleContext->GetParent(); - if (parentSC) { - const nsStyleText* text = (const nsStyleText*) - parentSC->GetStyleData(eStyleStruct_Text); - if (eStyleUnit_Inherit == text->mLineHeight.GetUnit()) { - nsIStyleContext* sc = GetNonInheritedLineHeightStyleContext(parentSC); - NS_RELEASE(parentSC); - return sc; - } - } - return parentSC; -} - static nscoord ComputeLineHeight(nsIRenderingContext* aRenderingContext, nsIStyleContext* aStyleContext) @@ -2168,30 +2151,16 @@ ComputeLineHeight(nsIRenderingContext* aRenderingContext, (const nsStyleVisibility*)aStyleContext->GetStyleData(eStyleStruct_Visibility); nsStyleUnit unit = text->mLineHeight.GetUnit(); - if (eStyleUnit_Inherit == unit) { - // Inherit parents line-height value - nsCOMPtr parentSC = - getter_AddRefs(GetNonInheritedLineHeightStyleContext(aStyleContext)); - if (parentSC) { - text = (const nsStyleText*) parentSC->GetStyleData(eStyleStruct_Text); - unit = text->mLineHeight.GetUnit(); - if (eStyleUnit_Percent == unit) { - // For percent, we inherit the computed value so update the - // font to use the parent's font not our font. - font = (const nsStyleFont*) parentSC->GetStyleData(eStyleStruct_Font); - } - } - } if (eStyleUnit_Coord == unit) { // For length values just use the pre-computed value lineHeight = text->mLineHeight.GetCoordValue(); } else { - // For "normal", factor or percentage units the computed value of - // the line-height property is found by multiplying the factor by - // the font's actual em height. For "normal" we use the - // font's normal line height (em height + leading). + // For "normal" or factor units the computed value of the + // line-height property is found by multiplying the factor by the + // font's actual em height. For "normal" we use the font's + // normal line height (em height + leading). nscoord emHeight = -1; nscoord normalLineHeight = -1; nsCOMPtr deviceContext; @@ -2212,10 +2181,8 @@ ComputeLineHeight(nsIRenderingContext* aRenderingContext, if (eStyleUnit_Factor == unit) { factor = text->mLineHeight.GetFactorValue(); } - else if (eStyleUnit_Percent == unit) { - factor = text->mLineHeight.GetPercentValue(); - } else { + NS_ASSERTION(eStyleUnit_Normal == unit, "bad unit"); factor = (((float) normalLineHeight) / PR_MAX(1, emHeight)); } diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp index 1416d8c104bf..971ddfc08e54 100644 --- a/layout/style/nsRuleNode.cpp +++ b/layout/style/nsRuleNode.cpp @@ -186,7 +186,7 @@ nsString& Unquote(nsString& aString) } nscoord CalcLength(const nsCSSValue& aValue, - nsFont* aFont, + const nsFont* aFont, nsIStyleContext* aStyleContext, nsIPresContext* aPresContext, PRBool& aInherited) @@ -200,18 +200,18 @@ nscoord CalcLength(const nsCSSValue& aValue, case eCSSUnit_EM: case eCSSUnit_Char: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; return NSToCoordRound(aValue.GetFloatValue() * (float)font->size); // XXX scale against font metrics height instead? } case eCSSUnit_EN: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; return NSToCoordRound((aValue.GetFloatValue() * (float)font->size) / 2.0f); } case eCSSUnit_XHeight: { aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; nsIFontMetrics* fm; aPresContext->GetMetricsFor(*font, &fm); NS_ASSERTION(nsnull != fm, "can't get font metrics"); @@ -228,7 +228,7 @@ nscoord CalcLength(const nsCSSValue& aValue, case eCSSUnit_CapHeight: { NS_NOTYETIMPLEMENTED("cap height unit"); aInherited = PR_TRUE; - nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; + const nsFont* font = aStyleContext ? &(((nsStyleFont*)aStyleContext->GetStyleData(eStyleStruct_Font))->mFont) : aFont; nscoord capHeight = ((font->size / 3) * 2); // XXX HACK! return NSToCoordRound(aValue.GetFloatValue() * (float)capHeight); } @@ -255,7 +255,6 @@ nscoord CalcLength(const nsCSSValue& aValue, #define SETCOORD_LH (SETCOORD_LENGTH | SETCOORD_INHERIT) #define SETCOORD_AH (SETCOORD_AUTO | SETCOORD_INHERIT) #define SETCOORD_LPH (SETCOORD_LP | SETCOORD_INHERIT) -#define SETCOORD_LPFHN (SETCOORD_LPH | SETCOORD_FACTOR | SETCOORD_NORMAL) #define SETCOORD_LPAH (SETCOORD_LP | SETCOORD_AH) #define SETCOORD_LPEH (SETCOORD_LP | SETCOORD_ENUMERATED | SETCOORD_INHERIT) #define SETCOORD_LE (SETCOORD_LENGTH | SETCOORD_ENUMERATED) @@ -1631,8 +1630,9 @@ nsRuleNode::gComputeStyleDataFn[] = { static void SetFont(nsIPresContext* aPresContext, nsIStyleContext* aContext, nscoord aMinFontSize, PRBool aUseDocumentFonts, PRBool aChromeOverride, - PRBool aIsGeneric, const nsCSSFont& aFontData, const nsFont& aDefaultFont, - nsStyleFont* aParentFont, nsStyleFont* aFont, PRBool& aInherited) + PRBool aIsGeneric, const nsCSSFont& aFontData, + const nsFont& aDefaultFont, const nsStyleFont* aParentFont, + nsStyleFont* aFont, PRBool& aInherited) { nsFont defaultVariableFont, defaultFixedFont; aPresContext->GetDefaultFont(kPresContext_DefaultVariableFont_ID, defaultVariableFont); @@ -2032,7 +2032,7 @@ nsRuleNode::ComputeFontData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSFont& fontData = NS_STATIC_CAST(const nsCSSFont&, aData); nsStyleFont* font = nsnull; - nsStyleFont* parentFont = font; + const nsStyleFont* parentFont = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2045,7 +2045,8 @@ nsRuleNode::ComputeFontData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentFont = (nsStyleFont*)parentContext->GetStyleData(eStyleStruct_Font); + parentFont = NS_STATIC_CAST(const nsStyleFont*, + parentContext->GetStyleData(eStyleStruct_Font)); if (parentFont) font = new (mPresContext) nsStyleFont(*parentFont); } @@ -2161,7 +2162,7 @@ nsRuleNode::ComputeTextData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSText& textData = NS_STATIC_CAST(const nsCSSText&, aData); nsStyleText* text = nsnull; - nsStyleText* parentText = text; + const nsStyleText* parentText = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2174,29 +2175,32 @@ nsRuleNode::ComputeTextData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentText = (nsStyleText*)parentContext->GetStyleData(eStyleStruct_Text); - if (parentText) { + parentText = NS_STATIC_CAST(const nsStyleText*, + parentContext->GetStyleData(eStyleStruct_Text)); + if (parentText) text = new (mPresContext) nsStyleText(*parentText); - - // Percentage line heights are not inherited. We need to change the value - // of line-height to inherit. - nsStyleUnit unit = text->mLineHeight.GetUnit(); - if (unit != eStyleUnit_Normal && unit != eStyleUnit_Factor && unit != eStyleUnit_Coord) - text->mLineHeight.SetInheritValue(); - } } } if (!text) - text = parentText = new (mPresContext) nsStyleText(); + parentText = text = new (mPresContext) nsStyleText(); // letter-spacing: normal, length, inherit SetCoord(textData.mLetterSpacing, text->mLetterSpacing, parentText->mLetterSpacing, SETCOORD_LH | SETCOORD_NORMAL, aContext, mPresContext, inherited); // line-height: normal, number, length, percent, inherit - SetCoord(textData.mLineHeight, text->mLineHeight, parentText->mLineHeight, - SETCOORD_LPFHN, aContext, mPresContext, inherited); + if (eCSSUnit_Percent == textData.mLineHeight.GetUnit()) { + aInherited = PR_TRUE; + const nsStyleFont* parentFont = NS_STATIC_CAST(const nsStyleFont*, + parentContext->GetStyleData(eStyleStruct_Font)); + text->mLineHeight.SetCoordValue((nscoord)((float)(parentFont->mSize) * + textData.mLineHeight.GetPercentValue())); + } else + SetCoord(textData.mLineHeight, text->mLineHeight, parentText->mLineHeight, + SETCOORD_LH | SETCOORD_FACTOR | SETCOORD_NORMAL, + aContext, mPresContext, inherited); + // text-align: enum, string, inherit if (eCSSUnit_Enumerated == textData.mTextAlign.GetUnit()) { @@ -2345,7 +2349,7 @@ nsRuleNode::ComputeUIData(nsStyleStruct* aStartData, const nsCSSStruct& aData, const nsCSSUserInterface& uiData = NS_STATIC_CAST(const nsCSSUserInterface&, aData); nsStyleUserInterface* ui = nsnull; - nsStyleUserInterface* parentUI = ui; + const nsStyleUserInterface* parentUI = nsnull; PRBool inherited = aInherited; if (aStartData) @@ -2358,14 +2362,15 @@ nsRuleNode::ComputeUIData(nsStyleStruct* aStartData, const nsCSSStruct& aData, // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentUI = (nsStyleUserInterface*)parentContext->GetStyleData(eStyleStruct_UserInterface); + parentUI = NS_STATIC_CAST(const nsStyleUserInterface*, + parentContext->GetStyleData(eStyleStruct_UserInterface)); if (parentUI) ui = new (mPresContext) nsStyleUserInterface(*parentUI); } } if (!ui) - ui = parentUI = new (mPresContext) nsStyleUserInterface(); + parentUI = ui = new (mPresContext) nsStyleUserInterface(); // cursor: enum, auto, url, inherit nsCSSValueList* list = uiData.mCursor; @@ -2460,10 +2465,11 @@ nsRuleNode::ComputeUIResetData(nsStyleStruct* aStartData, const nsCSSStruct& aDa ui = new (mPresContext) nsStyleUIReset(*NS_STATIC_CAST(nsStyleUIReset*, aStartData)); else ui = new (mPresContext) nsStyleUIReset(); - nsStyleUIReset* parentUI = ui; + const nsStyleUIReset* parentUI = ui; if (parentContext) - parentUI = (nsStyleUIReset*)parentContext->GetStyleData(eStyleStruct_UIReset); + parentUI = NS_STATIC_CAST(const nsStyleUIReset*, + parentContext->GetStyleData(eStyleStruct_UIReset)); PRBool inherited = aInherited; // user-select: none, enum, inherit @@ -2543,10 +2549,11 @@ nsRuleNode::ComputeDisplayData(nsStyleStruct* aStartStruct, const nsCSSStruct& a display = new (mPresContext) nsStyleDisplay(*NS_STATIC_CAST(nsStyleDisplay*, aStartStruct)); else display = new (mPresContext) nsStyleDisplay(); - nsStyleDisplay* parentDisplay = display; + const nsStyleDisplay* parentDisplay = display; if (parentContext) - parentDisplay = (nsStyleDisplay*)parentContext->GetStyleData(eStyleStruct_Display); + parentDisplay = NS_STATIC_CAST(const nsStyleDisplay*, + parentContext->GetStyleData(eStyleStruct_Display)); PRBool inherited = aInherited; // display: enum, none, inherit @@ -2751,7 +2758,7 @@ nsRuleNode::ComputeVisibilityData(nsStyleStruct* aStartStruct, const nsCSSStruct const nsCSSDisplay& displayData = NS_STATIC_CAST(const nsCSSDisplay&, aData); nsStyleVisibility* visibility = nsnull; - nsStyleVisibility* parentVisibility = visibility; + const nsStyleVisibility* parentVisibility = visibility; PRBool inherited = aInherited; if (aStartStruct) @@ -2764,14 +2771,15 @@ nsRuleNode::ComputeVisibilityData(nsStyleStruct* aStartStruct, const nsCSSStruct // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentVisibility = (nsStyleVisibility*)parentContext->GetStyleData(eStyleStruct_Visibility); + parentVisibility = NS_STATIC_CAST(const nsStyleVisibility*, + parentContext->GetStyleData(eStyleStruct_Visibility)); if (parentVisibility) visibility = new (mPresContext) nsStyleVisibility(*parentVisibility); } } if (!visibility) - visibility = parentVisibility = new (mPresContext) nsStyleVisibility(mPresContext); + parentVisibility = visibility = new (mPresContext) nsStyleVisibility(mPresContext); // opacity: factor, percent, inherit if (eCSSUnit_Percent == displayData.mOpacity.GetUnit()) { @@ -2845,7 +2853,7 @@ nsRuleNode::ComputeColorData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa const nsCSSColor& colorData = NS_STATIC_CAST(const nsCSSColor&, aData); nsStyleColor* color = nsnull; - nsStyleColor* parentColor = color; + const nsStyleColor* parentColor = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -2858,14 +2866,15 @@ nsRuleNode::ComputeColorData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentColor = (nsStyleColor*)parentContext->GetStyleData(eStyleStruct_Color); + parentColor = NS_STATIC_CAST(const nsStyleColor*, + parentContext->GetStyleData(eStyleStruct_Color)); if (parentColor) color = new (mPresContext) nsStyleColor(*parentColor); } } if (!color) - color = parentColor = new (mPresContext) nsStyleColor(mPresContext); + parentColor = color = new (mPresContext) nsStyleColor(mPresContext); // color: color, string, inherit SetColor(colorData.mColor, parentColor->mColor, mPresContext, color->mColor, inherited); @@ -2905,10 +2914,11 @@ nsRuleNode::ComputeBackgroundData(nsStyleStruct* aStartStruct, const nsCSSStruct bg = new (mPresContext) nsStyleBackground(*NS_STATIC_CAST(nsStyleBackground*, aStartStruct)); else bg = new (mPresContext) nsStyleBackground(mPresContext); - nsStyleBackground* parentBG = bg; + const nsStyleBackground* parentBG = bg; if (parentContext) - parentBG = (nsStyleBackground*)parentContext->GetStyleData(eStyleStruct_Background); + parentBG = NS_STATIC_CAST(const nsStyleBackground*, + parentContext->GetStyleData(eStyleStruct_Background)); PRBool inherited = aInherited; // background-color: color, string, enum (flags), inherit @@ -3063,10 +3073,11 @@ nsRuleNode::ComputeMarginData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD margin = new (mPresContext) nsStyleMargin(*NS_STATIC_CAST(nsStyleMargin*, aStartStruct)); else margin = new (mPresContext) nsStyleMargin(); - nsStyleMargin* parentMargin = margin; + const nsStyleMargin* parentMargin = margin; if (parentContext) - parentMargin = (nsStyleMargin*)parentContext->GetStyleData(eStyleStruct_Margin); + parentMargin = NS_STATIC_CAST(const nsStyleMargin*, + parentContext->GetStyleData(eStyleStruct_Margin)); PRBool inherited = aInherited; // margin: length, percent, auto, inherit @@ -3128,9 +3139,10 @@ nsRuleNode::ComputeBorderData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD else border = new (mPresContext) nsStyleBorder(mPresContext); - nsStyleBorder* parentBorder = border; + const nsStyleBorder* parentBorder = border; if (parentContext) - parentBorder = (nsStyleBorder*)parentContext->GetStyleData(eStyleStruct_Border); + parentBorder = NS_STATIC_CAST(const nsStyleBorder*, + parentContext->GetStyleData(eStyleStruct_Border)); PRBool inherited = aInherited; // border-size: length, enum, inherit @@ -3375,9 +3387,10 @@ nsRuleNode::ComputePaddingData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else padding = new (mPresContext) nsStylePadding(); - nsStylePadding* parentPadding = padding; + const nsStylePadding* parentPadding = padding; if (parentContext) - parentPadding = (nsStylePadding*)parentContext->GetStyleData(eStyleStruct_Padding); + parentPadding = NS_STATIC_CAST(const nsStylePadding*, + parentContext->GetStyleData(eStyleStruct_Padding)); PRBool inherited = aInherited; // padding: length, percent, inherit @@ -3439,9 +3452,10 @@ nsRuleNode::ComputeOutlineData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else outline = new (mPresContext) nsStyleOutline(mPresContext); - nsStyleOutline* parentOutline = outline; + const nsStyleOutline* parentOutline = outline; if (parentContext) - parentOutline = (nsStyleOutline*)parentContext->GetStyleData(eStyleStruct_Outline); + parentOutline = NS_STATIC_CAST(const nsStyleOutline*, + parentContext->GetStyleData(eStyleStruct_Outline)); PRBool inherited = aInherited; // outline-width: length, enum, inherit @@ -3503,7 +3517,7 @@ nsRuleNode::ComputeListData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat const nsCSSList& listData = NS_STATIC_CAST(const nsCSSList&, aData); nsStyleList* list = nsnull; - nsStyleList* parentList = list; + const nsStyleList* parentList = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -3516,14 +3530,15 @@ nsRuleNode::ComputeListData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDat // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentList = (nsStyleList*)parentContext->GetStyleData(eStyleStruct_List); + parentList = NS_STATIC_CAST(const nsStyleList*, + parentContext->GetStyleData(eStyleStruct_List)); if (parentList) list = new (mPresContext) nsStyleList(*parentList); } } if (!list) - list = parentList = new (mPresContext) nsStyleList(); + parentList = list = new (mPresContext) nsStyleList(); // list-style-type: enum, none, inherit if (eCSSUnit_Enumerated == listData.mType.GetUnit()) { @@ -3594,9 +3609,10 @@ nsRuleNode::ComputePositionData(nsStyleStruct* aStartStruct, const nsCSSStruct& else pos = new (mPresContext) nsStylePosition(); - nsStylePosition* parentPos = pos; + const nsStylePosition* parentPos = pos; if (parentContext) - parentPos = (nsStylePosition*)parentContext->GetStyleData(eStyleStruct_Position); + parentPos = NS_STATIC_CAST(const nsStylePosition*, + parentContext->GetStyleData(eStyleStruct_Position)); PRBool inherited = aInherited; // box offsets: length, percent, auto, inherit @@ -3701,9 +3717,10 @@ nsRuleNode::ComputeTableData(nsStyleStruct* aStartStruct, const nsCSSStruct& aDa else table = new (mPresContext) nsStyleTable(); - nsStyleTable* parentTable = table; + const nsStyleTable* parentTable = table; if (parentContext) - parentTable = (nsStyleTable*)parentContext->GetStyleData(eStyleStruct_Table); + parentTable = NS_STATIC_CAST(const nsStyleTable*, + parentContext->GetStyleData(eStyleStruct_Table)); PRBool inherited = aInherited; // table-layout: auto, enum, inherit @@ -3763,7 +3780,7 @@ nsRuleNode::ComputeTableBorderData(nsStyleStruct* aStartStruct, const nsCSSStruc const nsCSSTable& tableData = NS_STATIC_CAST(const nsCSSTable&, aData); nsStyleTableBorder* table = nsnull; - nsStyleTableBorder* parentTable = table; + const nsStyleTableBorder* parentTable = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -3776,14 +3793,15 @@ nsRuleNode::ComputeTableBorderData(nsStyleStruct* aStartStruct, const nsCSSStruc // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentTable = (nsStyleTableBorder*)parentContext->GetStyleData(eStyleStruct_TableBorder); + parentTable = NS_STATIC_CAST(const nsStyleTableBorder*, + parentContext->GetStyleData(eStyleStruct_TableBorder)); if (parentTable) table = new (mPresContext) nsStyleTableBorder(*parentTable); } } if (!table) - table = parentTable = new (mPresContext) nsStyleTableBorder(mPresContext); + parentTable = table = new (mPresContext) nsStyleTableBorder(mPresContext); // border-collapse: enum, inherit if (eCSSUnit_Enumerated == tableData.mBorderCollapse.GetUnit()) { @@ -3867,9 +3885,10 @@ nsRuleNode::ComputeContentData(nsStyleStruct* aStartStruct, const nsCSSStruct& a else content = new (mPresContext) nsStyleContent(); - nsStyleContent* parentContent = content; + const nsStyleContent* parentContent = content; if (parentContext) - parentContent = (nsStyleContent*)parentContext->GetStyleData(eStyleStruct_Content); + parentContent = NS_STATIC_CAST(const nsStyleContent*, + parentContext->GetStyleData(eStyleStruct_Content)); PRBool inherited = aInherited; // content: [string, url, counter, attr, enum]+, inherit @@ -4055,7 +4074,7 @@ nsRuleNode::ComputeQuotesData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD const nsCSSContent& contentData = NS_STATIC_CAST(const nsCSSContent&, aData); nsStyleQuotes* quotes = nsnull; - nsStyleQuotes* parentQuotes = quotes; + const nsStyleQuotes* parentQuotes = nsnull; PRBool inherited = aInherited; if (aStartStruct) @@ -4068,14 +4087,15 @@ nsRuleNode::ComputeQuotesData(nsStyleStruct* aStartStruct, const nsCSSStruct& aD // with inherited vals from parent. inherited = PR_TRUE; if (parentContext) - parentQuotes = (nsStyleQuotes*)parentContext->GetStyleData(eStyleStruct_Quotes); + parentQuotes = NS_STATIC_CAST(const nsStyleQuotes*, + parentContext->GetStyleData(eStyleStruct_Quotes)); if (parentQuotes) quotes = new (mPresContext) nsStyleQuotes(*parentQuotes); } } if (!quotes) - quotes = parentQuotes = new (mPresContext) nsStyleQuotes(); + parentQuotes = quotes = new (mPresContext) nsStyleQuotes(); // quotes: [string string]+, none, inherit PRUint32 count; @@ -4155,10 +4175,11 @@ nsRuleNode::ComputeXULData(nsStyleStruct* aStartStruct, const nsCSSStruct& aData else xul = new (mPresContext) nsStyleXUL(); - nsStyleXUL* parentXUL = xul; + const nsStyleXUL* parentXUL = xul; if (parentContext) - parentXUL = (nsStyleXUL*)parentContext->GetStyleData(eStyleStruct_XUL); + parentXUL = NS_STATIC_CAST(const nsStyleXUL*, + parentContext->GetStyleData(eStyleStruct_XUL)); PRBool inherited = aInherited;