| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 #include "core/rendering/InlineTextBox.h" | 26 #include "core/rendering/InlineTextBox.h" |
| 27 #include "core/rendering/PaintInfo.h" | 27 #include "core/rendering/PaintInfo.h" |
| 28 #include "core/rendering/RenderBlockFlow.h" | 28 #include "core/rendering/RenderBlockFlow.h" |
| 29 #include "core/rendering/RenderFlowThread.h" | 29 #include "core/rendering/RenderFlowThread.h" |
| 30 #include "core/rendering/RenderInline.h" | 30 #include "core/rendering/RenderInline.h" |
| 31 #include "core/rendering/RenderView.h" | 31 #include "core/rendering/RenderView.h" |
| 32 #include "core/rendering/VerticalPositionCache.h" | 32 #include "core/rendering/VerticalPositionCache.h" |
| 33 #include "platform/text/BidiResolver.h" | 33 #include "platform/text/BidiResolver.h" |
| 34 #include "wtf/unicode/Unicode.h" | 34 #include "wtf/unicode/Unicode.h" |
| 35 | 35 |
| 36 using namespace std; | |
| 37 | |
| 38 namespace WebCore { | 36 namespace WebCore { |
| 39 | 37 |
| 40 struct SameSizeAsRootInlineBox : public InlineFlowBox { | 38 struct SameSizeAsRootInlineBox : public InlineFlowBox { |
| 41 unsigned unsignedVariable; | 39 unsigned unsignedVariable; |
| 42 LayoutUnit layoutVariables[5]; | 40 LayoutUnit layoutVariables[5]; |
| 43 void* pointers[4]; | 41 void* pointers[4]; |
| 44 }; | 42 }; |
| 45 | 43 |
| 46 // FIXME(eae): Figure out why this fails on 64bit Windows builds. | 44 // FIXME(eae): Figure out why this fails on 64bit Windows builds. |
| 47 #if !OS(WIN) | 45 #if !OS(WIN) |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 bool setMaxDescent = false; | 227 bool setMaxDescent = false; |
| 230 | 228 |
| 231 // Figure out if we're in no-quirks mode. | 229 // Figure out if we're in no-quirks mode. |
| 232 bool noQuirksMode = renderer().document().inNoQuirksMode(); | 230 bool noQuirksMode = renderer().document().inNoQuirksMode(); |
| 233 | 231 |
| 234 m_baselineType = requiresIdeographicBaseline(textBoxDataMap) ? IdeographicBa
seline : AlphabeticBaseline; | 232 m_baselineType = requiresIdeographicBaseline(textBoxDataMap) ? IdeographicBa
seline : AlphabeticBaseline; |
| 235 | 233 |
| 236 computeLogicalBoxHeights(this, maxPositionTop, maxPositionBottom, maxAscent,
maxDescent, setMaxAscent, setMaxDescent, noQuirksMode, | 234 computeLogicalBoxHeights(this, maxPositionTop, maxPositionBottom, maxAscent,
maxDescent, setMaxAscent, setMaxDescent, noQuirksMode, |
| 237 textBoxDataMap, baselineType(), verticalPositionCac
he); | 235 textBoxDataMap, baselineType(), verticalPositionCac
he); |
| 238 | 236 |
| 239 if (maxAscent + maxDescent < max(maxPositionTop, maxPositionBottom)) | 237 if (maxAscent + maxDescent < std::max(maxPositionTop, maxPositionBottom)) |
| 240 adjustMaxAscentAndDescent(maxAscent, maxDescent, maxPositionTop, maxPosi
tionBottom); | 238 adjustMaxAscentAndDescent(maxAscent, maxDescent, maxPositionTop, maxPosi
tionBottom); |
| 241 | 239 |
| 242 LayoutUnit maxHeight = maxAscent + maxDescent; | 240 LayoutUnit maxHeight = maxAscent + maxDescent; |
| 243 LayoutUnit lineTop = heightOfBlock; | 241 LayoutUnit lineTop = heightOfBlock; |
| 244 LayoutUnit lineBottom = heightOfBlock; | 242 LayoutUnit lineBottom = heightOfBlock; |
| 245 LayoutUnit lineTopIncludingMargins = heightOfBlock; | 243 LayoutUnit lineTopIncludingMargins = heightOfBlock; |
| 246 LayoutUnit lineBottomIncludingMargins = heightOfBlock; | 244 LayoutUnit lineBottomIncludingMargins = heightOfBlock; |
| 247 LayoutUnit selectionBottom = heightOfBlock; | 245 LayoutUnit selectionBottom = heightOfBlock; |
| 248 bool setLineTop = false; | 246 bool setLineTop = false; |
| 249 bool hasAnnotationsBefore = false; | 247 bool hasAnnotationsBefore = false; |
| 250 bool hasAnnotationsAfter = false; | 248 bool hasAnnotationsAfter = false; |
| 251 placeBoxesInBlockDirection(heightOfBlock, maxHeight, maxAscent, noQuirksMode
, lineTop, lineBottom, selectionBottom, setLineTop, | 249 placeBoxesInBlockDirection(heightOfBlock, maxHeight, maxAscent, noQuirksMode
, lineTop, lineBottom, selectionBottom, setLineTop, |
| 252 lineTopIncludingMargins, lineBottomIncludingMargi
ns, hasAnnotationsBefore, hasAnnotationsAfter, baselineType()); | 250 lineTopIncludingMargins, lineBottomIncludingMargi
ns, hasAnnotationsBefore, hasAnnotationsAfter, baselineType()); |
| 253 m_hasAnnotationsBefore = hasAnnotationsBefore; | 251 m_hasAnnotationsBefore = hasAnnotationsBefore; |
| 254 m_hasAnnotationsAfter = hasAnnotationsAfter; | 252 m_hasAnnotationsAfter = hasAnnotationsAfter; |
| 255 | 253 |
| 256 maxHeight = max<LayoutUnit>(0, maxHeight); // FIXME: Is this really necessar
y? | 254 maxHeight = std::max<LayoutUnit>(0, maxHeight); // FIXME: Is this really nec
essary? |
| 257 | 255 |
| 258 setLineTopBottomPositions(lineTop, lineBottom, heightOfBlock, heightOfBlock
+ maxHeight, selectionBottom); | 256 setLineTopBottomPositions(lineTop, lineBottom, heightOfBlock, heightOfBlock
+ maxHeight, selectionBottom); |
| 259 if (block().view()->layoutState()->isPaginated()) | 257 if (block().view()->layoutState()->isPaginated()) |
| 260 setPaginatedLineWidth(block().availableLogicalWidthForContent()); | 258 setPaginatedLineWidth(block().availableLogicalWidthForContent()); |
| 261 | 259 |
| 262 LayoutUnit annotationsAdjustment = beforeAnnotationsAdjustment(); | 260 LayoutUnit annotationsAdjustment = beforeAnnotationsAdjustment(); |
| 263 if (annotationsAdjustment) { | 261 if (annotationsAdjustment) { |
| 264 // FIXME: Need to handle pagination here. We might have to move to the n
ext page/column as a result of the | 262 // FIXME: Need to handle pagination here. We might have to move to the n
ext page/column as a result of the |
| 265 // ruby expansion. | 263 // ruby expansion. |
| 266 adjustBlockDirectionPosition(annotationsAdjustment.toFloat()); | 264 adjustBlockDirectionPosition(annotationsAdjustment.toFloat()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 283 | 281 |
| 284 if (!renderer().style()->isFlippedLinesWritingMode()) { | 282 if (!renderer().style()->isFlippedLinesWritingMode()) { |
| 285 // Annotations under the previous line may push us down. | 283 // Annotations under the previous line may push us down. |
| 286 if (prevRootBox() && prevRootBox()->hasAnnotationsAfter()) | 284 if (prevRootBox() && prevRootBox()->hasAnnotationsAfter()) |
| 287 result = prevRootBox()->computeUnderAnnotationAdjustment(lineTop()); | 285 result = prevRootBox()->computeUnderAnnotationAdjustment(lineTop()); |
| 288 | 286 |
| 289 if (!hasAnnotationsBefore()) | 287 if (!hasAnnotationsBefore()) |
| 290 return result; | 288 return result; |
| 291 | 289 |
| 292 // Annotations over this line may push us further down. | 290 // Annotations over this line may push us further down. |
| 293 LayoutUnit highestAllowedPosition = prevRootBox() ? min(prevRootBox()->l
ineBottom(), lineTop()) + result : static_cast<LayoutUnit>(block().borderBefore(
)); | 291 LayoutUnit highestAllowedPosition = prevRootBox() ? std::min(prevRootBox
()->lineBottom(), lineTop()) + result : static_cast<LayoutUnit>(block().borderBe
fore()); |
| 294 result = computeOverAnnotationAdjustment(highestAllowedPosition); | 292 result = computeOverAnnotationAdjustment(highestAllowedPosition); |
| 295 } else { | 293 } else { |
| 296 // Annotations under this line may push us up. | 294 // Annotations under this line may push us up. |
| 297 if (hasAnnotationsBefore()) | 295 if (hasAnnotationsBefore()) |
| 298 result = computeUnderAnnotationAdjustment(prevRootBox() ? prevRootBo
x()->lineBottom() : static_cast<LayoutUnit>(block().borderBefore())); | 296 result = computeUnderAnnotationAdjustment(prevRootBox() ? prevRootBo
x()->lineBottom() : static_cast<LayoutUnit>(block().borderBefore())); |
| 299 | 297 |
| 300 if (!prevRootBox() || !prevRootBox()->hasAnnotationsAfter()) | 298 if (!prevRootBox() || !prevRootBox()->hasAnnotationsAfter()) |
| 301 return result; | 299 return result; |
| 302 | 300 |
| 303 // We have to compute the expansion for annotations over the previous li
ne to see how much we should move. | 301 // We have to compute the expansion for annotations over the previous li
ne to see how much we should move. |
| 304 LayoutUnit lowestAllowedPosition = max(prevRootBox()->lineBottom(), line
Top()) - result; | 302 LayoutUnit lowestAllowedPosition = std::max(prevRootBox()->lineBottom(),
lineTop()) - result; |
| 305 result = prevRootBox()->computeOverAnnotationAdjustment(lowestAllowedPos
ition); | 303 result = prevRootBox()->computeOverAnnotationAdjustment(lowestAllowedPos
ition); |
| 306 } | 304 } |
| 307 | 305 |
| 308 return result; | 306 return result; |
| 309 } | 307 } |
| 310 | 308 |
| 311 GapRects RootInlineBox::lineSelectionGap(RenderBlock* rootBlock, const LayoutPoi
nt& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, | 309 GapRects RootInlineBox::lineSelectionGap(RenderBlock* rootBlock, const LayoutPoi
nt& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, |
| 312 LayoutUnit selTop, LayoutUnit selHeight
, const PaintInfo* paintInfo) | 310 LayoutUnit selTop, LayoutUnit selHeight
, const PaintInfo* paintInfo) |
| 313 { | 311 { |
| 314 RenderObject::SelectionState lineState = selectionState(); | 312 RenderObject::SelectionState lineState = selectionState(); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 return top; | 439 return top; |
| 442 | 440 |
| 443 LayoutSize offsetToBlockBefore; | 441 LayoutSize offsetToBlockBefore; |
| 444 if (RenderBlock* block = root().block().blockBeforeWithinSelectionRoot(offse
tToBlockBefore)) { | 442 if (RenderBlock* block = root().block().blockBeforeWithinSelectionRoot(offse
tToBlockBefore)) { |
| 445 if (RootInlineBox* lastLine = block->lastRootBox()) { | 443 if (RootInlineBox* lastLine = block->lastRootBox()) { |
| 446 RenderObject::SelectionState lastLineSelectionState = lastLine->sele
ctionState(); | 444 RenderObject::SelectionState lastLineSelectionState = lastLine->sele
ctionState(); |
| 447 if (lastLineSelectionState != RenderObject::SelectionInside && lastL
ineSelectionState != RenderObject::SelectionStart) | 445 if (lastLineSelectionState != RenderObject::SelectionInside && lastL
ineSelectionState != RenderObject::SelectionStart) |
| 448 return top; | 446 return top; |
| 449 | 447 |
| 450 LayoutUnit lastLineSelectionBottom = lastLine->selectionBottom() + o
ffsetToBlockBefore.height(); | 448 LayoutUnit lastLineSelectionBottom = lastLine->selectionBottom() + o
ffsetToBlockBefore.height(); |
| 451 top = max(top, lastLineSelectionBottom); | 449 top = std::max(top, lastLineSelectionBottom); |
| 452 } | 450 } |
| 453 } | 451 } |
| 454 | 452 |
| 455 return top; | 453 return top; |
| 456 } | 454 } |
| 457 | 455 |
| 458 LayoutUnit RootInlineBox::selectionBottom() const | 456 LayoutUnit RootInlineBox::selectionBottom() const |
| 459 { | 457 { |
| 460 LayoutUnit selectionBottom = m_selectionBottom; | 458 LayoutUnit selectionBottom = m_selectionBottom; |
| 461 | 459 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 476 LayoutUnit newRight = block().logicalRightOffsetForLine(selectionBottom,
false); | 474 LayoutUnit newRight = block().logicalRightOffsetForLine(selectionBottom,
false); |
| 477 if (nextLeft > newLeft || nextRight < newRight) | 475 if (nextLeft > newLeft || nextRight < newRight) |
| 478 return selectionBottom; | 476 return selectionBottom; |
| 479 } | 477 } |
| 480 | 478 |
| 481 return nextTop; | 479 return nextTop; |
| 482 } | 480 } |
| 483 | 481 |
| 484 int RootInlineBox::blockDirectionPointInLine() const | 482 int RootInlineBox::blockDirectionPointInLine() const |
| 485 { | 483 { |
| 486 return !block().style()->isFlippedBlocksWritingMode() ? max(lineTop(), selec
tionTop()) : min(lineBottom(), selectionBottom()); | 484 return !block().style()->isFlippedBlocksWritingMode() ? std::max(lineTop(),
selectionTop()) : std::min(lineBottom(), selectionBottom()); |
| 487 } | 485 } |
| 488 | 486 |
| 489 RenderBlockFlow& RootInlineBox::block() const | 487 RenderBlockFlow& RootInlineBox::block() const |
| 490 { | 488 { |
| 491 return toRenderBlockFlow(renderer()); | 489 return toRenderBlockFlow(renderer()); |
| 492 } | 490 } |
| 493 | 491 |
| 494 static bool isEditableLeaf(InlineBox* leaf) | 492 static bool isEditableLeaf(InlineBox* leaf) |
| 495 { | 493 { |
| 496 return leaf && leaf->renderer().node() && leaf->renderer().node()->rendererI
sEditable(); | 494 return leaf && leaf->renderer().node() && leaf->renderer().node()->rendererI
sEditable(); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 } | 584 } |
| 587 | 585 |
| 588 LayoutRect RootInlineBox::paddedLayoutOverflowRect(LayoutUnit endPadding) const | 586 LayoutRect RootInlineBox::paddedLayoutOverflowRect(LayoutUnit endPadding) const |
| 589 { | 587 { |
| 590 LayoutRect lineLayoutOverflow = layoutOverflowRect(lineTop(), lineBottom()); | 588 LayoutRect lineLayoutOverflow = layoutOverflowRect(lineTop(), lineBottom()); |
| 591 if (!endPadding) | 589 if (!endPadding) |
| 592 return lineLayoutOverflow; | 590 return lineLayoutOverflow; |
| 593 | 591 |
| 594 if (isHorizontal()) { | 592 if (isHorizontal()) { |
| 595 if (isLeftToRightDirection()) | 593 if (isLeftToRightDirection()) |
| 596 lineLayoutOverflow.shiftMaxXEdgeTo(max<LayoutUnit>(lineLayoutOverflo
w.maxX(), logicalRight() + endPadding)); | 594 lineLayoutOverflow.shiftMaxXEdgeTo(std::max<LayoutUnit>(lineLayoutOv
erflow.maxX(), logicalRight() + endPadding)); |
| 597 else | 595 else |
| 598 lineLayoutOverflow.shiftXEdgeTo(min<LayoutUnit>(lineLayoutOverflow.x
(), logicalLeft() - endPadding)); | 596 lineLayoutOverflow.shiftXEdgeTo(std::min<LayoutUnit>(lineLayoutOverf
low.x(), logicalLeft() - endPadding)); |
| 599 } else { | 597 } else { |
| 600 if (isLeftToRightDirection()) | 598 if (isLeftToRightDirection()) |
| 601 lineLayoutOverflow.shiftMaxYEdgeTo(max<LayoutUnit>(lineLayoutOverflo
w.maxY(), logicalRight() + endPadding)); | 599 lineLayoutOverflow.shiftMaxYEdgeTo(std::max<LayoutUnit>(lineLayoutOv
erflow.maxY(), logicalRight() + endPadding)); |
| 602 else | 600 else |
| 603 lineLayoutOverflow.shiftYEdgeTo(min<LayoutUnit>(lineLayoutOverflow.y
(), logicalLeft() - endPadding)); | 601 lineLayoutOverflow.shiftYEdgeTo(std::min<LayoutUnit>(lineLayoutOverf
low.y(), logicalLeft() - endPadding)); |
| 604 } | 602 } |
| 605 | 603 |
| 606 return lineLayoutOverflow; | 604 return lineLayoutOverflow; |
| 607 } | 605 } |
| 608 | 606 |
| 609 static void setAscentAndDescent(int& ascent, int& descent, int newAscent, int ne
wDescent, bool& ascentDescentSet) | 607 static void setAscentAndDescent(int& ascent, int& descent, int newAscent, int ne
wDescent, bool& ascentDescentSet) |
| 610 { | 608 { |
| 611 if (!ascentDescentSet) { | 609 if (!ascentDescentSet) { |
| 612 ascentDescentSet = true; | 610 ascentDescentSet = true; |
| 613 ascent = newAscent; | 611 ascent = newAscent; |
| 614 descent = newDescent; | 612 descent = newDescent; |
| 615 } else { | 613 } else { |
| 616 ascent = max(ascent, newAscent); | 614 ascent = std::max(ascent, newAscent); |
| 617 descent = max(descent, newDescent); | 615 descent = std::max(descent, newDescent); |
| 618 } | 616 } |
| 619 } | 617 } |
| 620 | 618 |
| 621 void RootInlineBox::ascentAndDescentForBox(InlineBox* box, GlyphOverflowAndFallb
ackFontsMap& textBoxDataMap, int& ascent, int& descent, | 619 void RootInlineBox::ascentAndDescentForBox(InlineBox* box, GlyphOverflowAndFallb
ackFontsMap& textBoxDataMap, int& ascent, int& descent, |
| 622 bool& affectsAscent, bool& affectsDes
cent) const | 620 bool& affectsAscent, bool& affectsDes
cent) const |
| 623 { | 621 { |
| 624 bool ascentDescentSet = false; | 622 bool ascentDescentSet = false; |
| 625 | 623 |
| 626 // Replaced boxes will return 0 for the line-height if line-box-contain says
they are | 624 // Replaced boxes will return 0 for the line-height if line-box-contain says
they are |
| 627 // not to be included. | 625 // not to be included. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 int fontDescent = box->renderer().style(isFirstLineStyle())->fontMetrics
().descent(baselineType()); | 692 int fontDescent = box->renderer().style(isFirstLineStyle())->fontMetrics
().descent(baselineType()); |
| 695 setAscentAndDescent(ascent, descent, fontAscent, fontDescent, ascentDesc
entSet); | 693 setAscentAndDescent(ascent, descent, fontAscent, fontDescent, ascentDesc
entSet); |
| 696 affectsAscent = fontAscent - box->logicalTop() > 0; | 694 affectsAscent = fontAscent - box->logicalTop() > 0; |
| 697 affectsDescent = fontDescent + box->logicalTop() > 0; | 695 affectsDescent = fontDescent + box->logicalTop() > 0; |
| 698 } | 696 } |
| 699 | 697 |
| 700 if (includeGlyphsForBox(box) && glyphOverflow && glyphOverflow->computeBound
s) { | 698 if (includeGlyphsForBox(box) && glyphOverflow && glyphOverflow->computeBound
s) { |
| 701 setAscentAndDescent(ascent, descent, glyphOverflow->top, glyphOverflow->
bottom, ascentDescentSet); | 699 setAscentAndDescent(ascent, descent, glyphOverflow->top, glyphOverflow->
bottom, ascentDescentSet); |
| 702 affectsAscent = glyphOverflow->top - box->logicalTop() > 0; | 700 affectsAscent = glyphOverflow->top - box->logicalTop() > 0; |
| 703 affectsDescent = glyphOverflow->bottom + box->logicalTop() > 0; | 701 affectsDescent = glyphOverflow->bottom + box->logicalTop() > 0; |
| 704 glyphOverflow->top = min(glyphOverflow->top, max(0, glyphOverflow->top -
box->renderer().style(isFirstLineStyle())->fontMetrics().ascent(baselineType())
)); | 702 glyphOverflow->top = std::min(glyphOverflow->top, std::max(0, glyphOverf
low->top - box->renderer().style(isFirstLineStyle())->fontMetrics().ascent(basel
ineType()))); |
| 705 glyphOverflow->bottom = min(glyphOverflow->bottom, max(0, glyphOverflow-
>bottom - box->renderer().style(isFirstLineStyle())->fontMetrics().descent(basel
ineType()))); | 703 glyphOverflow->bottom = std::min(glyphOverflow->bottom, std::max(0, glyp
hOverflow->bottom - box->renderer().style(isFirstLineStyle())->fontMetrics().des
cent(baselineType()))); |
| 706 } | 704 } |
| 707 | 705 |
| 708 if (includeMarginForBox(box)) { | 706 if (includeMarginForBox(box)) { |
| 709 LayoutUnit ascentWithMargin = box->renderer().style(isFirstLineStyle())-
>fontMetrics().ascent(baselineType()); | 707 LayoutUnit ascentWithMargin = box->renderer().style(isFirstLineStyle())-
>fontMetrics().ascent(baselineType()); |
| 710 LayoutUnit descentWithMargin = box->renderer().style(isFirstLineStyle())
->fontMetrics().descent(baselineType()); | 708 LayoutUnit descentWithMargin = box->renderer().style(isFirstLineStyle())
->fontMetrics().descent(baselineType()); |
| 711 if (box->parent() && !box->renderer().isText()) { | 709 if (box->parent() && !box->renderer().isText()) { |
| 712 ascentWithMargin += box->boxModelObject()->borderBefore() + box->box
ModelObject()->paddingBefore() + box->boxModelObject()->marginBefore(); | 710 ascentWithMargin += box->boxModelObject()->borderBefore() + box->box
ModelObject()->paddingBefore() + box->boxModelObject()->marginBefore(); |
| 713 descentWithMargin += box->boxModelObject()->borderAfter() + box->box
ModelObject()->paddingAfter() + box->boxModelObject()->marginAfter(); | 711 descentWithMargin += box->boxModelObject()->borderAfter() + box->box
ModelObject()->paddingAfter() + box->boxModelObject()->marginAfter(); |
| 714 } | 712 } |
| 715 setAscentAndDescent(ascent, descent, ascentWithMargin, descentWithMargin
, ascentDescentSet); | 713 setAscentAndDescent(ascent, descent, ascentWithMargin, descentWithMargin
, ascentDescentSet); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 } | 877 } |
| 880 | 878 |
| 881 #ifndef NDEBUG | 879 #ifndef NDEBUG |
| 882 const char* RootInlineBox::boxName() const | 880 const char* RootInlineBox::boxName() const |
| 883 { | 881 { |
| 884 return "RootInlineBox"; | 882 return "RootInlineBox"; |
| 885 } | 883 } |
| 886 #endif | 884 #endif |
| 887 | 885 |
| 888 } // namespace WebCore | 886 } // namespace WebCore |
| OLD | NEW |