Changeset 156608 in webkit for trunk/Source/WebCore/rendering/RenderInline.cpp
- Timestamp:
- Sep 28, 2013, 11:30:16 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/rendering/RenderInline.cpp
r156527 r156608 225 225 if (!alwaysCreateLineBoxes && checkFonts && document().styleSheetCollection().usesFirstLineRules()) { 226 226 // Have to check the first line style as well. 227 parentStyle = parent()-> style(true);228 RenderStyle* childStyle = style(true);227 parentStyle = parent()->firstLineStyle(); 228 RenderStyle* childStyle = firstLineStyle(); 229 229 alwaysCreateLineBoxes = !parentStyle->font().fontMetrics().hasIdenticalAscentDescentAndLineGap(childStyle->font().fontMetrics()) 230 || childStyle->verticalAlign() != BASELINE231 || parentStyle->lineHeight() != childStyle->lineHeight();230 || childStyle->verticalAlign() != BASELINE 231 || parentStyle->lineHeight() != childStyle->lineHeight(); 232 232 } 233 233 … … 571 571 if (currBox->inlineBoxWrapper()) { 572 572 const RootInlineBox& rootBox = currBox->inlineBoxWrapper()->root(); 573 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); 574 int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height(); 573 const RenderStyle& containerStyle = rootBox.isFirstLine() ? *container->firstLineStyle() : *container->style(); 574 int logicalTop = rootBox.logicalTop() + (rootBox.lineStyle().font().fontMetrics().ascent() - containerStyle.font().fontMetrics().ascent()); 575 int logicalHeight = containerStyle.font().fontMetrics().height(); 575 576 if (isHorizontal) 576 577 yield(FloatRect(currBox->inlineBoxWrapper()->x() - currBox->marginLeft(), logicalTop, currBox->width() + currBox->marginWidth(), logicalHeight)); … … 586 587 for (InlineFlowBox* childLine = currInline->firstLineBox(); childLine; childLine = childLine->nextLineBox()) { 587 588 const RootInlineBox& rootBox = childLine->root(); 588 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); 589 int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height(); 589 const RenderStyle& containerStyle = rootBox.isFirstLine() ? *container->firstLineStyle() : *container->style(); 590 int logicalTop = rootBox.logicalTop() + (rootBox.lineStyle().font().fontMetrics().ascent() - containerStyle.font().fontMetrics().ascent()); 591 int logicalHeight = containerStyle.fontMetrics().height(); 590 592 if (isHorizontal) 591 593 yield(FloatRect(childLine->x() - childLine->marginLogicalLeft(), … … 604 606 for (InlineTextBox* childText = currText->firstTextBox(); childText; childText = childText->nextTextBox()) { 605 607 const RootInlineBox& rootBox = childText->root(); 606 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); 607 int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height(); 608 const RenderStyle& containerStyle = rootBox.isFirstLine() ? *container->firstLineStyle() : *container->style(); 609 int logicalTop = rootBox.logicalTop() + (rootBox.lineStyle().font().fontMetrics().ascent() - containerStyle.font().fontMetrics().ascent()); 610 int logicalHeight = containerStyle.font().fontMetrics().height(); 608 611 if (isHorizontal) 609 612 yield(FloatRect(childText->x(), logicalTop, childText->logicalWidth(), logicalHeight)); … … 615 618 // FIXME: This could use a helper to share these with text path. 616 619 const RootInlineBox& rootBox = inlineBox->root(); 617 int logicalTop = rootBox.logicalTop() + (rootBox.renderer().style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent() - container->style(rootBox.isFirstLineStyle())->font().fontMetrics().ascent()); 618 int logicalHeight = container->style(rootBox.isFirstLineStyle())->font().fontMetrics().height(); 620 const RenderStyle& containerStyle = rootBox.isFirstLine() ? *container->firstLineStyle() : *container->style(); 621 int logicalTop = rootBox.logicalTop() + (rootBox.lineStyle().font().fontMetrics().ascent() - containerStyle.font().fontMetrics().ascent()); 622 int logicalHeight = containerStyle.fontMetrics().height(); 619 623 if (isHorizontal) 620 624 yield(FloatRect(inlineBox->x(), logicalTop, inlineBox->logicalWidth(), logicalHeight)); … … 1353 1357 { 1354 1358 if (firstLine && document().styleSheetCollection().usesFirstLineRules()) { 1355 RenderStyle* s = style(firstLine);1356 if ( s!= style())1357 return s->computedLineHeight(&view());1359 const RenderStyle& firstLineStyle = *this->firstLineStyle(); 1360 if (&firstLineStyle != style()) 1361 return firstLineStyle.computedLineHeight(&view()); 1358 1362 } 1359 1363 … … 1363 1367 int RenderInline::baselinePosition(FontBaseline baselineType, bool firstLine, LineDirectionMode direction, LinePositionMode linePositionMode) const 1364 1368 { 1365 const FontMetrics& fontMetrics = style(firstLine)->fontMetrics(); 1369 const RenderStyle& style = firstLine ? *firstLineStyle() : *this->style(); 1370 const FontMetrics& fontMetrics = style.fontMetrics(); 1366 1371 return fontMetrics.ascent(baselineType) + (lineHeight(firstLine, direction, linePositionMode) - fontMetrics.height()) / 2; 1367 1372 }
Note:
See TracChangeset
for help on using the changeset viewer.