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

Reply via email to