| Index: Source/core/rendering/RenderInline.cpp
|
| diff --git a/Source/core/rendering/RenderInline.cpp b/Source/core/rendering/RenderInline.cpp
|
| index 6fba9640d7c062d5f77310715731a72ce9a785fe..1df37ff6bacd66a4243b7c22aeb8c523b4d0b032 100644
|
| --- a/Source/core/rendering/RenderInline.cpp
|
| +++ b/Source/core/rendering/RenderInline.cpp
|
| @@ -216,8 +216,8 @@ void RenderInline::updateAlwaysCreateLineBoxes(bool fullLayout)
|
|
|
| if (!alwaysCreateLineBoxes && checkFonts && document().styleEngine()->usesFirstLineRules()) {
|
| // Have to check the first line style as well.
|
| - parentStyle = parent()->style(true);
|
| - RenderStyle* childStyle = style(true);
|
| + parentStyle = parent()->styleOrFirstLineStyle(true);
|
| + RenderStyle* childStyle = styleOrFirstLineStyle(true);
|
| alwaysCreateLineBoxes = !parentStyle->font().fontMetrics().hasIdenticalAscentDescentAndLineGap(childStyle->font().fontMetrics())
|
| || childStyle->verticalAlign() != BASELINE
|
| || parentStyle->lineHeight() != childStyle->lineHeight();
|
| @@ -556,8 +556,8 @@ void RenderInline::generateCulledLineBoxRects(GeneratorContext& yield, const Ren
|
| RenderBox* currBox = toRenderBox(curr);
|
| if (currBox->inlineBoxWrapper()) {
|
| RootInlineBox& rootBox = currBox->inlineBoxWrapper()->root();
|
| - int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| - int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| + int logicalTop = rootBox.logicalTop() + (rootBox.renderer().styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| + int logicalHeight = container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| if (isHorizontal)
|
| yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->marginLeft(), logicalTop, (currBox->width() + currBox->marginWidth()).toFloat(), logicalHeight));
|
| else
|
| @@ -571,8 +571,8 @@ void RenderInline::generateCulledLineBoxRects(GeneratorContext& yield, const Ren
|
| else {
|
| for (InlineFlowBox* childLine = currInline->firstLineBox(); childLine; childLine = childLine->nextLineBox()) {
|
| RootInlineBox& rootBox = childLine->root();
|
| - int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| - int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| + int logicalTop = rootBox.logicalTop() + (rootBox.renderer().styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| + int logicalHeight = container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| if (isHorizontal)
|
| yield(FloatRect(childLine->x() - childLine->marginLogicalLeft(),
|
| logicalTop,
|
| @@ -589,8 +589,8 @@ void RenderInline::generateCulledLineBoxRects(GeneratorContext& yield, const Ren
|
| RenderText* currText = toRenderText(curr);
|
| for (InlineTextBox* childText = currText->firstTextBox(); childText; childText = childText->nextTextBox()) {
|
| RootInlineBox& rootBox = childText->root();
|
| - int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| - int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| + int logicalTop = rootBox.logicalTop() + (rootBox.renderer().styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().ascent());
|
| + int logicalHeight = container->styleOrFirstLineStyle(rootBox.isFirstLineStyle())->font().fontMetrics().height();
|
| if (isHorizontal)
|
| yield(FloatRect(childText->x(), logicalTop, childText->logicalWidth(), logicalHeight));
|
| else
|
| @@ -1281,7 +1281,7 @@ InlineFlowBox* RenderInline::createAndAppendInlineFlowBox()
|
| LayoutUnit RenderInline::lineHeight(bool firstLine, LineDirectionMode /*direction*/, LinePositionMode /*linePositionMode*/) const
|
| {
|
| if (firstLine && document().styleEngine()->usesFirstLineRules()) {
|
| - RenderStyle* s = style(firstLine);
|
| + RenderStyle* s = styleOrFirstLineStyle(firstLine);
|
| if (s != style())
|
| return s->computedLineHeight();
|
| }
|
| @@ -1292,7 +1292,7 @@ LayoutUnit RenderInline::lineHeight(bool firstLine, LineDirectionMode /*directio
|
| int RenderInline::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode direction, LinePositionMode linePositionMode) const
|
| {
|
| ASSERT(linePositionMode == PositionOnContainingLine);
|
| - const FontMetrics& fontMetrics = style(firstLine)->fontMetrics();
|
| + const FontMetrics& fontMetrics = styleOrFirstLineStyle(firstLine)->fontMetrics();
|
| return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction, linePositionMode) - fontMetrics.height()) / 2;
|
| }
|
|
|
|
|