[IFC][Integration] Rename InlineIterator::Line to LineBox
https://bugs.webkit.org/show_bug.cgi?id=238128
Reviewed by Antti Koivisto.
* dom/Position.cpp:
(WebCore::Position::upstream const):
(WebCore::Position::downstream const):
(WebCore::Position::rendersInDifferentPosition const):
* editing/RenderedPosition.h:
(WebCore::RenderedPosition::lineBox const):
(WebCore::RenderedPosition::line const): Deleted.
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::leftVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::rightVisuallyDistinctCandidate const):
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
* editing/VisibleUnits.cpp:
(WebCore::startTextOrLineBreakBox):
(WebCore::endTextOrLineBreakBox):
(WebCore::logicallyPreviousBox):
(WebCore::logicallyNextBox):
(WebCore::startPositionForLine):
(WebCore::endPositionForLine):
(WebCore::absoluteLineDirectionPointToLocalPointInBlock):
(WebCore::previousLinePosition):
(WebCore::nextLinePosition):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
* layout/integration/InlineIteratorBox.cpp:
(WebCore::InlineIterator::Box::lineBox const):
(WebCore::InlineIterator::Box::style const):
(WebCore::InlineIterator::Box::line const): Deleted.
* layout/integration/InlineIteratorBox.h:
* layout/integration/InlineIteratorLine.cpp:
(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::atEnd const):
(WebCore::InlineIterator::LineBoxIterator::traverseNext):
(WebCore::InlineIterator::LineBoxIterator::traversePrevious):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::firstLineBoxFor):
(WebCore::InlineIterator::lastLineBoxFor):
(WebCore::InlineIterator::LineBox::next const):
(WebCore::InlineIterator::LineBox::previous const):
(WebCore::InlineIterator::LineBox::firstLeafBox const):
(WebCore::InlineIterator::LineBox::lastLeafBox const):
(WebCore::InlineIterator::closestBoxForHorizontalPosition):
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::atEnd const): Deleted.
(WebCore::InlineIterator::LineIterator::traverseNext): Deleted.
(WebCore::InlineIterator::LineIterator::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::firstLineFor): Deleted.
(WebCore::InlineIterator::lastLineFor): Deleted.
(WebCore::InlineIterator::Line::next const): Deleted.
(WebCore::InlineIterator::Line::previous const): Deleted.
(WebCore::InlineIterator::Line::firstLeafBox const): Deleted.
(WebCore::InlineIterator::Line::lastLeafBox const): Deleted.
* layout/integration/InlineIteratorLine.h:
(WebCore::InlineIterator::LineBox::height const):
(WebCore::InlineIterator::LineBoxIterator::LineBoxIterator):
(WebCore::InlineIterator::LineBoxIterator::operator++):
(WebCore::InlineIterator::LineBoxIterator::operator!= const):
(WebCore::InlineIterator::LineBoxIterator::operator== const):
(WebCore::InlineIterator::LineBoxIterator::operator* const):
(WebCore::InlineIterator::LineBoxIterator::operator-> const):
(WebCore::InlineIterator::previousLineBoxContentBottomOrBorderAndPadding):
(WebCore::InlineIterator::contentStartInBlockDirection):
(WebCore::InlineIterator::LineBox::LineBox):
(WebCore::InlineIterator::LineBox::contentLogicalTop const):
(WebCore::InlineIterator::LineBox::contentLogicalBottom const):
(WebCore::InlineIterator::LineBox::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBox::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBox::top const):
(WebCore::InlineIterator::LineBox::bottom const):
(WebCore::InlineIterator::LineBox::contentLogicalLeft const):
(WebCore::InlineIterator::LineBox::contentLogicalRight const):
(WebCore::InlineIterator::LineBox::contentLogicalWidth const):
(WebCore::InlineIterator::LineBox::isHorizontal const):
(WebCore::InlineIterator::LineBox::baselineType const):
(WebCore::InlineIterator::LineBox::containingBlock const):
(WebCore::InlineIterator::LineBox::containingFragment const):
(WebCore::InlineIterator::LineBox::isFirstAfterPageBreak const):
(WebCore::InlineIterator::LineBox::isFirst const):
(WebCore::InlineIterator::Line::lineBoxHeight const): Deleted.
(WebCore::InlineIterator::LineIterator::LineIterator): Deleted.
(WebCore::InlineIterator::LineIterator::operator++): Deleted.
(WebCore::InlineIterator::LineIterator::operator bool const): Deleted.
(WebCore::InlineIterator::LineIterator::operator!= const): Deleted.
(WebCore::InlineIterator::LineIterator::operator== const): Deleted.
(WebCore::InlineIterator::LineIterator::operator* const): Deleted.
(WebCore::InlineIterator::LineIterator::operator-> const): Deleted.
(WebCore::InlineIterator::previousLineContentBottomOrBorderAndPadding): Deleted.
(WebCore::InlineIterator::Line::Line): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::Line::lineBoxTop const): Deleted.
(WebCore::InlineIterator::Line::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::Line::contentLogicalWidth const): Deleted.
(WebCore::InlineIterator::Line::isHorizontal const): Deleted.
(WebCore::InlineIterator::Line::baselineType const): Deleted.
(WebCore::InlineIterator::Line::containingBlock const): Deleted.
(WebCore::InlineIterator::Line::containingFragment const): Deleted.
(WebCore::InlineIterator::Line::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::Line::isFirst const): Deleted.
* layout/integration/InlineIteratorLineLegacyPath.h:
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::LineBoxIteratorLegacyPath):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::top const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorLegacyPath::operator== const):
(WebCore::InlineIterator::LineIteratorLegacyPath::LineIteratorLegacyPath): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorLegacyPath::lastLeafBox const): Deleted.
* layout/integration/InlineIteratorLineModernPath.h:
(WebCore::InlineIterator::LineBoxIteratorModernPath::LineBoxIteratorModernPath):
(WebCore::InlineIterator::LineBoxIteratorModernPath::top const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::bottom const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalTopAdjustedForPrecedingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::contentLogicalBottomAdjustedForFollowingLineBox const):
(WebCore::InlineIterator::LineBoxIteratorModernPath::operator== const):
(WebCore::InlineIterator::LineIteratorModernPath::LineIteratorModernPath): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxTop const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lineBoxBottom const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalTopAdjustedForPrecedingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalBottomAdjustedForFollowingLine const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalLeft const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::contentLogicalRight const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isHorizontal const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::baselineType const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingBlock const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::containingFragment const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::isFirstAfterPageBreak const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traverseNext): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::traversePrevious): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::operator== const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::atEnd const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::firstLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lastLeafBox const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::setAtEnd): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::lines const): Deleted.
(WebCore::InlineIterator::LineIteratorModernPath::line const): Deleted.
* layout/integration/InlineIteratorLogicalOrderTraversal.cpp:
(WebCore::InlineIterator::makeLineLogicalOrderCache):
(WebCore::InlineIterator::updateLineLogicalOrderCacheIfNeeded):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrder):
(WebCore::InlineIterator::firstLeafOnLineInLogicalOrderWithNode):
(WebCore::InlineIterator::lastLeafOnLineInLogicalOrderWithNode):
* layout/integration/InlineIteratorLogicalOrderTraversal.h:
(WebCore::InlineIterator::leafBoxesInLogicalOrder):
* layout/integration/InlineIteratorTextBox.cpp:
(WebCore::InlineIterator::TextBox::selectionRect const):
* layout/integration/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::firstLineBox const):
(WebCore::LayoutIntegration::LineLayout::lastLineBox const):
(WebCore::LayoutIntegration::LineLayout::firstLine const): Deleted.
(WebCore::LayoutIntegration::LineLayout::lastLine const): Deleted.
* layout/integration/LayoutIntegrationLineLayout.h:
* layout/integration/LineSelection.h:
(WebCore::LineSelection::logicalTop):
(WebCore::LineSelection::logicalBottom):
(WebCore::LineSelection::logicalRect):
(WebCore::LineSelection::physicalRect):
(WebCore::LineSelection::logicalTopAdjustedForPrecedingBlock):
(WebCore::LineSelection::selectionState):
* rendering/CaretRectComputation.cpp:
(WebCore::computeCaretRectForLinePosition):
(WebCore::computeCaretRectForText):
(WebCore::computeCaretRectForLineBreak):
(WebCore::computeCaretRectForBox):
* rendering/InlineBoxPainter.cpp:
(WebCore::InlineBoxPainter::InlineBoxPainter):
(WebCore::InlineBoxPainter::paintMask):
(WebCore::InlineBoxPainter::paintDecorations):
(WebCore::InlineBoxPainter::style const):
* rendering/InlineBoxPainter.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::adjustEnclosingTopForPrecedingBlock const):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::containsNonZeroBidiLevel const):
(WebCore::RenderBlockFlow::findClosestTextAtAbsolutePoint):
(WebCore::RenderBlockFlow::positionForPointWithInlineChildren):
(WebCore::RenderBlockFlow::addFocusRingRectsForInlineChildren):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::getLeadingCorner const):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::paintOutline):
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::positionForPoint):
* rendering/RenderText.cpp:
(WebCore::RenderText::positionForPoint):
* rendering/TextBoxPainter.cpp:
(WebCore::TextBoxPainter::TextBoxPainter):
(WebCore::TextBoxPainter::paintBackground):
(WebCore::textPosition):
(WebCore::TextBoxPainter::computePaintRect):
* rendering/svg/SVGRootInlineBox.cpp:
(WebCore::SVGRootInlineBox::reorderValueListsToLogicalOrder):
* style/InlineTextBoxStyle.cpp:
(WebCore::minLogicalTopForTextDecorationLine):
(WebCore::maxLogicalBottomForTextDecorationLine):
(WebCore::computeUnderlineOffset):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@291548 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/rendering/RenderBlockFlow.cpp b/Source/WebCore/rendering/RenderBlockFlow.cpp
index 13f4f07..6020fd2 100644
--- a/Source/WebCore/rendering/RenderBlockFlow.cpp
+++ b/Source/WebCore/rendering/RenderBlockFlow.cpp
@@ -36,7 +36,7 @@
#include "HitTestLocation.h"
#include "InlineIteratorBox.h"
#include "InlineIteratorInlineBox.h"
-#include "InlineIteratorLine.h"
+#include "InlineIteratorLineBox.h"
#include "InlineIteratorLogicalOrderTraversal.h"
#include "InlineIteratorTextBox.h"
#include "InlineWalker.h"
@@ -3061,12 +3061,12 @@
if (!offsetToBlockBefore.height())
return top;
- if (auto lastLine = InlineIterator::lastLineFor(*blockBefore)) {
- auto lastLineSelectionState = LineSelection::selectionState(*lastLine);
+ if (auto lastLineBox = InlineIterator::lastLineBoxFor(*blockBefore)) {
+ auto lastLineSelectionState = LineSelection::selectionState(*lastLineBox);
if (lastLineSelectionState != RenderObject::HighlightState::Inside && lastLineSelectionState != RenderObject::HighlightState::Start)
return top;
- auto lastLineSelectionBottom = LineSelection::logicalBottom(*lastLine) + offsetToBlockBefore.height();
+ auto lastLineSelectionBottom = LineSelection::logicalBottom(*lastLineBox) + offsetToBlockBefore.height();
top = std::max(top, LayoutUnit { lastLineSelectionBottom });
}
return top;
@@ -3087,12 +3087,12 @@
return { };
}
- auto hasSelectedChildren = [&](const InlineIterator::LineIterator& line) {
- return LineSelection::selectionState(*line) != RenderObject::HighlightState::None;
+ auto hasSelectedChildren = [&](const InlineIterator::LineBoxIterator& lineBox) {
+ return LineSelection::selectionState(*lineBox) != RenderObject::HighlightState::None;
};
- auto lineSelectionGap = [&](const InlineIterator::LineIterator& line, LayoutUnit selTop, LayoutUnit selHeight) -> GapRects {
- auto lineState = LineSelection::selectionState(*line);
+ auto lineSelectionGap = [&](const InlineIterator::LineBoxIterator& lineBox, LayoutUnit selTop, LayoutUnit selHeight) -> GapRects {
+ auto lineState = LineSelection::selectionState(*lineBox);
bool leftGap, rightGap;
getSelectionGapInfo(lineState, leftGap, rightGap);
@@ -3100,7 +3100,7 @@
GapRects result;
auto firstSelectedBox = [&]() -> InlineIterator::LeafBoxIterator {
- for (auto box = line->firstLeafBox(); box; box.traverseNextOnLine()) {
+ for (auto box = lineBox->firstLeafBox(); box; box.traverseNextOnLine()) {
if (box->selectionState() != RenderObject::HighlightState::None)
return box;
}
@@ -3108,7 +3108,7 @@
}();
auto lastSelectedBox = [&]() -> InlineIterator::LeafBoxIterator {
- for (auto box = line->lastLeafBox(); box; box.traversePreviousOnLine()) {
+ for (auto box = lineBox->lastLeafBox(); box; box.traversePreviousOnLine()) {
if (box->selectionState() != RenderObject::HighlightState::None)
return box;
}
@@ -3157,38 +3157,40 @@
return result;
};
- InlineIterator::LineIterator lastSelectedLine;
- InlineIterator::LineIterator line = InlineIterator::firstLineFor(*this);
- for (; line && !hasSelectedChildren(line); line.traverseNext()) { }
+ InlineIterator::LineBoxIterator lastSelectedLineBox;
+ auto lineBox = InlineIterator::firstLineBoxFor(*this);
+ for (; lineBox && !hasSelectedChildren(lineBox); lineBox.traverseNext()) { }
GapRects result;
// Now paint the gaps for the lines.
- for (; line && hasSelectedChildren(line); line.traverseNext()) {
- auto selectionTop = LayoutUnit { LineSelection::logicalTopAdjustedForPrecedingBlock(*line) };
- auto selectionHeight = LayoutUnit { std::max(0.f, LineSelection::logicalBottom(*line) - selectionTop) };
+ for (; lineBox && hasSelectedChildren(lineBox); lineBox.traverseNext()) {
+ auto selectionTop = LayoutUnit { LineSelection::logicalTopAdjustedForPrecedingBlock(*lineBox) };
+ auto selectionHeight = LayoutUnit { std::max(0.f, LineSelection::logicalBottom(*lineBox) - selectionTop) };
- if (!containsStart && !lastSelectedLine &&
- selectionState() != HighlightState::Start && selectionState() != HighlightState::Both && !isRubyBase())
+ if (!containsStart && !lastSelectedLineBox
+ && selectionState() != HighlightState::Start
+ && selectionState() != HighlightState::Both && !isRubyBase())
result.uniteCenter(blockSelectionGap(rootBlock, rootBlockPhysicalPosition, offsetFromRootBlock, lastLogicalTop, lastLogicalLeft, lastLogicalRight, selectionTop, cache, paintInfo));
- LayoutRect logicalRect { LayoutUnit(line->contentLogicalLeft()), selectionTop, LayoutUnit(line->contentLogicalWidth()), selectionTop + selectionHeight };
+ LayoutRect logicalRect { LayoutUnit(lineBox->contentLogicalLeft()), selectionTop, LayoutUnit(lineBox->contentLogicalWidth()), selectionTop + selectionHeight };
logicalRect.move(isHorizontalWritingMode() ? offsetFromRootBlock : offsetFromRootBlock.transposedSize());
LayoutRect physicalRect = rootBlock.logicalRectToPhysicalRect(rootBlockPhysicalPosition, logicalRect);
if (!paintInfo || (isHorizontalWritingMode() && physicalRect.y() < paintInfo->rect.maxY() && physicalRect.maxY() > paintInfo->rect.y())
|| (!isHorizontalWritingMode() && physicalRect.x() < paintInfo->rect.maxX() && physicalRect.maxX() > paintInfo->rect.x()))
- result.unite(lineSelectionGap(line, selectionTop, selectionHeight));
+ result.unite(lineSelectionGap(lineBox, selectionTop, selectionHeight));
- lastSelectedLine = line;
+ lastSelectedLineBox = lineBox;
}
- if (containsStart && !lastSelectedLine)
+ if (containsStart && !lastSelectedLineBox) {
// VisibleSelection must start just after our last line.
- lastSelectedLine = InlineIterator::lastLineFor(*this);
+ lastSelectedLineBox = InlineIterator::lastLineBoxFor(*this);
+ }
- if (lastSelectedLine && selectionState() != HighlightState::End && selectionState() != HighlightState::Both) {
+ if (lastSelectedLineBox && selectionState() != HighlightState::End && selectionState() != HighlightState::Both) {
// Update our lastY to be the bottom of the last selected line.
- auto lastLineSelectionBottom = LayoutUnit { LineSelection::logicalBottom(*lastSelectedLine) };
+ auto lastLineSelectionBottom = LayoutUnit { LineSelection::logicalBottom(*lastSelectedLineBox) };
lastLogicalTop = blockDirectionOffset(rootBlock, offsetFromRootBlock) + lastLineSelectionBottom;
lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastLineSelectionBottom, cache);
lastLogicalRight = logicalRightSelectionOffset(rootBlock, lastLineSelectionBottom, cache);
@@ -3273,8 +3275,8 @@
bool RenderBlockFlow::containsNonZeroBidiLevel() const
{
- for (auto line = InlineIterator::firstLineFor(*this); line; line.traverseNext()) {
- for (auto box = line->firstLeafBox(); box; box = box.traverseNextOnLine()) {
+ for (auto lineBox = InlineIterator::firstLineBoxFor(*this); lineBox; lineBox.traverseNext()) {
+ for (auto box = lineBox->firstLeafBox(); box; box = box.traverseNextOnLine()) {
if (box->bidiLevel())
return true;
}
@@ -3353,7 +3355,7 @@
return nullptr;
if (localPoint.y() > *previousRootInlineBoxBottom && localPoint.y() < box->logicalTop()) {
- auto closestBox = closestBoxForHorizontalPosition(*box->line(), localPoint.x());
+ auto closestBox = closestBoxForHorizontalPosition(*box->lineBox(), localPoint.x());
if (closestBox && is<RenderText>(closestBox->renderer()))
return const_cast<RenderText*>(&downcast<RenderText>(closestBox->renderer()));
}
@@ -3367,9 +3369,9 @@
{
ASSERT(childrenInline());
- auto firstLine = InlineIterator::firstLineFor(*this);
+ auto firstLineBox = InlineIterator::firstLineBoxFor(*this);
- if (!firstLine)
+ if (!firstLineBox)
return createVisiblePosition(0, Affinity::Downstream);
bool linesAreFlipped = style().isFlippedLinesWritingMode();
@@ -3377,36 +3379,36 @@
// look for the closest line box in the root box which is at the passed-in y coordinate
InlineIterator::LeafBoxIterator closestBox;
- InlineIterator::LineIterator firstLineWithChildren;
- InlineIterator::LineIterator lastLineWithChildren;
- for (auto line = firstLine; line; line.traverseNext()) {
- if (fragment && line->containingFragment() != fragment)
+ InlineIterator::LineBoxIterator firstLineBoxWithChildren;
+ InlineIterator::LineBoxIterator lastLineBoxWithChildren;
+ for (auto lineBox = firstLineBox; lineBox; lineBox.traverseNext()) {
+ if (fragment && lineBox->containingFragment() != fragment)
continue;
- if (!line->firstLeafBox())
+ if (!lineBox->firstLeafBox())
continue;
- if (!firstLineWithChildren)
- firstLineWithChildren = line;
+ if (!firstLineBoxWithChildren)
+ firstLineBoxWithChildren = lineBox;
- if (!linesAreFlipped && line->isFirstAfterPageBreak()
- && (pointInLogicalContents.y() < line->lineBoxTop() || (blocksAreFlipped && pointInLogicalContents.y() == line->lineBoxTop())))
+ if (!linesAreFlipped && lineBox->isFirstAfterPageBreak()
+ && (pointInLogicalContents.y() < lineBox->top() || (blocksAreFlipped && pointInLogicalContents.y() == lineBox->top())))
break;
- lastLineWithChildren = line;
+ lastLineBoxWithChildren = lineBox;
// check if this root line box is located at this y coordinate
- auto selectionBottom = LineSelection::logicalBottom(*line);
+ auto selectionBottom = LineSelection::logicalBottom(*lineBox);
if (pointInLogicalContents.y() < selectionBottom || (blocksAreFlipped && pointInLogicalContents.y() == selectionBottom)) {
if (linesAreFlipped) {
- auto nextLineWithChildren = line->next();
- while (nextLineWithChildren && !nextLineWithChildren->firstLeafBox())
- nextLineWithChildren.traverseNext();
+ auto nextLineBoxWithChildren = lineBox->next();
+ while (nextLineBoxWithChildren && !nextLineBoxWithChildren->firstLeafBox())
+ nextLineBoxWithChildren.traverseNext();
- if (nextLineWithChildren && nextLineWithChildren->isFirstAfterPageBreak()
- && (pointInLogicalContents.y() > nextLineWithChildren->lineBoxTop() || (!blocksAreFlipped && pointInLogicalContents.y() == nextLineWithChildren->lineBoxTop())))
+ if (nextLineBoxWithChildren && nextLineBoxWithChildren->isFirstAfterPageBreak()
+ && (pointInLogicalContents.y() > nextLineBoxWithChildren->top() || (!blocksAreFlipped && pointInLogicalContents.y() == nextLineBoxWithChildren->top())))
continue;
}
- closestBox = closestBoxForHorizontalPosition(*line, pointInLogicalContents.x());
+ closestBox = closestBoxForHorizontalPosition(*lineBox, pointInLogicalContents.x());
if (closestBox)
break;
}
@@ -3414,17 +3416,17 @@
bool moveCaretToBoundary = frame().editor().behavior().shouldMoveCaretToHorizontalBoundaryWhenPastTopOrBottom();
- if (!moveCaretToBoundary && !closestBox && lastLineWithChildren) {
+ if (!moveCaretToBoundary && !closestBox && lastLineBoxWithChildren) {
// y coordinate is below last root line box, pretend we hit it
- closestBox = closestBoxForHorizontalPosition(*lastLineWithChildren, pointInLogicalContents.x());
+ closestBox = closestBoxForHorizontalPosition(*lastLineBoxWithChildren, pointInLogicalContents.x());
}
if (closestBox) {
if (moveCaretToBoundary) {
- auto firstLineWithChildrenTop = LayoutUnit { std::min(previousLineContentBottomOrBorderAndPadding(*firstLineWithChildren), firstLineWithChildren->contentLogicalTop()) };
+ auto firstLineWithChildrenTop = LayoutUnit { std::min(previousLineBoxContentBottomOrBorderAndPadding(*firstLineBoxWithChildren), firstLineBoxWithChildren->contentLogicalTop()) };
if (pointInLogicalContents.y() < firstLineWithChildrenTop
|| (blocksAreFlipped && pointInLogicalContents.y() == firstLineWithChildrenTop)) {
- auto box = firstLineWithChildren->firstLeafBox();
+ auto box = firstLineBoxWithChildren->firstLeafBox();
if (box->isLineBreak()) {
if (auto next = box->nextOnLineIgnoringLineBreak())
box = next;
@@ -3435,7 +3437,7 @@
}
// pass the box a top position that is inside it
- auto point = LayoutPoint { pointInLogicalContents.x(), contentStartInBlockDirection(*closestBox->line()) };
+ auto point = LayoutPoint { pointInLogicalContents.x(), contentStartInBlockDirection(*closestBox->lineBox()) };
if (!isHorizontalWritingMode())
point = point.transposedPoint();
if (closestBox->renderer().isReplacedOrInlineBlock())
@@ -3443,11 +3445,11 @@
return const_cast<RenderObject&>(closestBox->renderer()).positionForPoint(point, nullptr);
}
- if (lastLineWithChildren) {
+ if (lastLineBoxWithChildren) {
// We hit this case for Mac behavior when the Y coordinate is below the last box.
ASSERT(moveCaretToBoundary);
InlineIterator::LineLogicalOrderCache orderCache;
- if (auto logicallyLastBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(lastLineWithChildren, orderCache))
+ if (auto logicallyLastBox = InlineIterator::lastLeafOnLineInLogicalOrderWithNode(lastLineBoxWithChildren, orderCache))
return positionForRun(*this, logicallyLastBox, false);
}
@@ -3471,11 +3473,11 @@
{
ASSERT(childrenInline());
for (auto box = InlineIterator::firstRootInlineBoxFor(*this); box; box.traverseNextInlineBox()) {
- auto line = box->line();
+ auto lineBox = box->lineBox();
// FIXME: This is mixing physical and logical coordinates.
auto unflippedVisualRect = box->visualRectIgnoringBlockDirection();
- auto top = std::max(line->contentLogicalTop(), unflippedVisualRect.y());
- auto bottom = std::min(line->contentLogicalBottom(), unflippedVisualRect.maxY());
+ auto top = std::max(lineBox->contentLogicalTop(), unflippedVisualRect.y());
+ auto bottom = std::min(lineBox->contentLogicalBottom(), unflippedVisualRect.maxY());
auto rect = LayoutRect { LayoutUnit { additionalOffset.x() + unflippedVisualRect.x() }
, additionalOffset.y() + top
, LayoutUnit { unflippedVisualRect.width() }