Title: [269747] trunk/Source/WebCore
Revision
269747
Author
[email protected]
Date
2020-11-12 13:24:14 -0800 (Thu, 12 Nov 2020)

Log Message

[LFC][Integration] VisiblePosition::absoluteSelectionBoundsForLine should use iterator
https://bugs.webkit.org/show_bug.cgi?id=218866

Reviewed by Zalan Bujtas.

* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):

Also fix confused logical->physical mapping. The client wants physical position.

* editing/VisiblePosition.h:
(WebCore::VisiblePosition::inlineBoxAndOffset const): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (269746 => 269747)


--- trunk/Source/WebCore/ChangeLog	2020-11-12 20:54:47 UTC (rev 269746)
+++ trunk/Source/WebCore/ChangeLog	2020-11-12 21:24:14 UTC (rev 269747)
@@ -1,3 +1,18 @@
+2020-11-12  Antti Koivisto  <[email protected]>
+
+        [LFC][Integration] VisiblePosition::absoluteSelectionBoundsForLine should use iterator
+        https://bugs.webkit.org/show_bug.cgi?id=218866
+
+        Reviewed by Zalan Bujtas.
+
+        * editing/VisiblePosition.cpp:
+        (WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
+
+        Also fix confused logical->physical mapping. The client wants physical position.
+
+        * editing/VisiblePosition.h:
+        (WebCore::VisiblePosition::inlineBoxAndOffset const): Deleted.
+
 2020-11-12  Zalan Bujtas  <[email protected]>
 
         [LFC][Integration] Enable inline replaced support

Modified: trunk/Source/WebCore/editing/VisiblePosition.cpp (269746 => 269747)


--- trunk/Source/WebCore/editing/VisiblePosition.cpp	2020-11-12 20:54:47 UTC (rev 269746)
+++ trunk/Source/WebCore/editing/VisiblePosition.cpp	2020-11-12 21:24:14 UTC (rev 269747)
@@ -40,8 +40,7 @@
 #include "LayoutIntegrationRunIterator.h"
 #include "Logging.h"
 #include "Range.h"
-#include "RenderBlock.h"
-#include "RootInlineBox.h"
+#include "RenderBlockFlow.h"
 #include "SimpleRange.h"
 #include "Text.h"
 #include "TextIterator.h"
@@ -656,13 +655,16 @@
 
 FloatRect VisiblePosition::absoluteSelectionBoundsForLine() const
 {
-    auto inlineBox = inlineBoxAndOffset().box;
-    if (!inlineBox)
+    auto run = inlineRunAndOffset().run;
+    if (!run)
         return { };
 
-    auto& root = inlineBox->root();
-    auto localRect = FloatRect { root.x(), root.selectionTop(), root.width(), root.selectionHeight() };
-    return root.renderer().localToAbsoluteQuad(localRect).boundingBox();
+    auto line = run.line();
+    auto localRect = FloatRect { FloatPoint { line->logicalLeft(), line->selectionTop() }, FloatPoint { line->logicalRight(), line->selectionBottom() } };
+    if (!line->isHorizontal())
+        localRect = localRect.transposedRect();
+
+    return line->containingBlock().localToAbsoluteQuad(localRect).boundingBox();
 }
 
 int VisiblePosition::lineDirectionPointForBlockDirectionNavigation() const

Modified: trunk/Source/WebCore/editing/VisiblePosition.h (269746 => 269747)


--- trunk/Source/WebCore/editing/VisiblePosition.h	2020-11-12 20:54:47 UTC (rev 269746)
+++ trunk/Source/WebCore/editing/VisiblePosition.h	2020-11-12 21:24:14 UTC (rev 269747)
@@ -70,9 +70,6 @@
     InlineRunAndOffset inlineRunAndOffset() const;
     InlineRunAndOffset inlineRunAndOffset(TextDirection primaryDirection) const;
 
-    InlineBoxAndOffset inlineBoxAndOffset() const;
-    InlineBoxAndOffset inlineBoxAndOffset(TextDirection primaryDirection) const;
-
     struct LocalCaretRect {
         LayoutRect rect;
         RenderObject* renderer { nullptr };
@@ -181,16 +178,6 @@
     return is_gteq(documentOrder(a, b));
 }
 
-inline auto VisiblePosition::inlineBoxAndOffset() const -> InlineBoxAndOffset
-{
-    return m_deepPosition.inlineBoxAndOffset(m_affinity);
-}
-
-inline auto VisiblePosition::inlineBoxAndOffset(TextDirection primaryDirection) const -> InlineBoxAndOffset
-{
-    return m_deepPosition.inlineBoxAndOffset(m_affinity, primaryDirection);
-}
-
 } // namespace WebCore
 
 #if ENABLE(TREE_DEBUGGING)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to