Title: [291215] trunk/Source/WebCore
- Revision
- 291215
- Author
- za...@apple.com
- Date
- 2022-03-12 20:55:53 -0800 (Sat, 12 Mar 2022)
Log Message
[IFC][Integration] Add InlineIterator::Line::selectionPhysicalRect
https://bugs.webkit.org/show_bug.cgi?id=237796
Reviewed by Antti Koivisto.
Introduce selectionPhysicalRect() so that the clients don't need to convert/flip the logical coords and
also rename selectionRect() to selectionLogicalRect() to clear up any ambiguity.
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
* layout/integration/InlineIteratorLine.h:
(WebCore::InlineIterator::Line::selectionLogicalRect const):
(WebCore::InlineIterator::Line::selectionPhysicalRect const):
(WebCore::InlineIterator::Line::selectionRect const): Deleted.
* rendering/CaretRectComputation.cpp:
(WebCore::computeCaretRectForLinePosition):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (291214 => 291215)
--- trunk/Source/WebCore/ChangeLog 2022-03-13 04:54:09 UTC (rev 291214)
+++ trunk/Source/WebCore/ChangeLog 2022-03-13 04:55:53 UTC (rev 291215)
@@ -1,5 +1,24 @@
2022-03-12 Alan Bujtas <za...@apple.com>
+ [IFC][Integration] Add InlineIterator::Line::selectionPhysicalRect
+ https://bugs.webkit.org/show_bug.cgi?id=237796
+
+ Reviewed by Antti Koivisto.
+
+ Introduce selectionPhysicalRect() so that the clients don't need to convert/flip the logical coords and
+ also rename selectionRect() to selectionLogicalRect() to clear up any ambiguity.
+
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
+ * layout/integration/InlineIteratorLine.h:
+ (WebCore::InlineIterator::Line::selectionLogicalRect const):
+ (WebCore::InlineIterator::Line::selectionPhysicalRect const):
+ (WebCore::InlineIterator::Line::selectionRect const): Deleted.
+ * rendering/CaretRectComputation.cpp:
+ (WebCore::computeCaretRectForLinePosition):
+
+2022-03-12 Alan Bujtas <za...@apple.com>
+
[IFC][Integration] Replace generic InlineIterator::Line::legacyRootInlineBox() with 2 dedicated functions
https://bugs.webkit.org/show_bug.cgi?id=237807
Modified: trunk/Source/WebCore/editing/VisiblePosition.cpp (291214 => 291215)
--- trunk/Source/WebCore/editing/VisiblePosition.cpp 2022-03-13 04:54:09 UTC (rev 291214)
+++ trunk/Source/WebCore/editing/VisiblePosition.cpp 2022-03-13 04:55:53 UTC (rev 291215)
@@ -669,11 +669,7 @@
return { };
auto line = run->line();
- auto localRect = FloatRect { FloatPoint { line->contentLogicalLeft(), line->selectionTop() }, FloatPoint { line->contentLogicalRight(), line->selectionBottom() } };
- if (!line->isHorizontal())
- localRect = localRect.transposedRect();
- line->containingBlock().flipForWritingMode(localRect);
- return line->containingBlock().localToAbsoluteQuad(localRect).boundingBox();
+ return line->containingBlock().localToAbsoluteQuad(FloatRect { line->selectionPhysicalRect() }).boundingBox();
}
int VisiblePosition::lineDirectionPointForBlockDirectionNavigation() const
Modified: trunk/Source/WebCore/layout/integration/InlineIteratorLine.h (291214 => 291215)
--- trunk/Source/WebCore/layout/integration/InlineIteratorLine.h 2022-03-13 04:54:09 UTC (rev 291214)
+++ trunk/Source/WebCore/layout/integration/InlineIteratorLine.h 2022-03-13 04:55:53 UTC (rev 291215)
@@ -52,17 +52,22 @@
LayoutUnit top() const;
LayoutUnit bottom() const;
+
+ LayoutUnit lineBoxTop() const;
+ LayoutUnit lineBoxBottom() const;
+ LayoutUnit lineBoxHeight() const { return lineBoxBottom() - lineBoxTop(); }
+
LayoutUnit selectionTop() const;
LayoutUnit selectionTopForHitTesting() const;
LayoutUnit selectionBottom() const;
LayoutUnit selectionHeight() const;
+
+ LayoutRect selectionLogicalRect() const;
+ LayoutRect selectionPhysicalRect() const;
+
LayoutUnit selectionTopAdjustedForPrecedingBlock() const;
LayoutUnit selectionHeightAdjustedForPrecedingBlock() const;
- LayoutUnit lineBoxTop() const;
- LayoutUnit lineBoxBottom() const;
- LayoutUnit lineBoxHeight() const { return lineBoxBottom() - lineBoxTop(); }
- LayoutRect selectionRect() const;
RenderObject::HighlightState selectionState() const;
float contentLogicalLeft() const;
@@ -193,11 +198,20 @@
});
}
-inline LayoutRect Line::selectionRect() const
+inline LayoutRect Line::selectionLogicalRect() const
{
return { LayoutPoint { contentLogicalLeft(), selectionTop() }, LayoutPoint { contentLogicalRight(), selectionBottom() } };
}
+inline LayoutRect Line::selectionPhysicalRect() const
+{
+ auto physicalRect = selectionLogicalRect();
+ if (!isHorizontal())
+ physicalRect = physicalRect.transposedRect();
+ containingBlock().flipForWritingMode(physicalRect);
+ return physicalRect;
+}
+
inline float Line::contentLogicalLeft() const
{
return WTF::switchOn(m_pathVariant, [](const auto& path) {
Modified: trunk/Source/WebCore/rendering/CaretRectComputation.cpp (291214 => 291215)
--- trunk/Source/WebCore/rendering/CaretRectComputation.cpp 2022-03-13 04:54:09 UTC (rev 291214)
+++ trunk/Source/WebCore/rendering/CaretRectComputation.cpp 2022-03-13 04:55:53 UTC (rev 291215)
@@ -112,7 +112,7 @@
static LayoutRect computeCaretRectForLinePosition(const InlineIterator::LineIterator& line, float logicalLeftPosition, CaretRectMode caretRectMode)
{
auto& containingBlock = line->containingBlock();
- auto lineSelectionRect = line->selectionRect();
+ auto lineSelectionRect = line->selectionLogicalRect();
int height = lineSelectionRect.height();
int top = lineSelectionRect.y();
Modified: trunk/Source/WebCore/rendering/RenderLineBreak.cpp (291214 => 291215)
--- trunk/Source/WebCore/rendering/RenderLineBreak.cpp 2022-03-13 04:54:09 UTC (rev 291214)
+++ trunk/Source/WebCore/rendering/RenderLineBreak.cpp 2022-03-13 04:55:53 UTC (rev 291215)
@@ -187,7 +187,7 @@
return;
auto line = run->line();
- auto lineSelectionRect = line->selectionRect();
+ auto lineSelectionRect = line->selectionLogicalRect();
LayoutRect rect = IntRect(run->logicalLeft(), lineSelectionRect.y(), 0, lineSelectionRect.height());
if (!line->isHorizontal())
rect = rect.transposedRect();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes