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