Changeset 269747 in webkit


Ignore:
Timestamp:
Nov 12, 2020 1:24:14 PM (3 years ago)
Author:
Antti Koivisto
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.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r269745 r269747  
     12020-11-12  Antti Koivisto  <antti@apple.com>
     2
     3        [LFC][Integration] VisiblePosition::absoluteSelectionBoundsForLine should use iterator
     4        https://bugs.webkit.org/show_bug.cgi?id=218866
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        * editing/VisiblePosition.cpp:
     9        (WebCore::VisiblePosition::absoluteSelectionBoundsForLine const):
     10
     11        Also fix confused logical->physical mapping. The client wants physical position.
     12
     13        * editing/VisiblePosition.h:
     14        (WebCore::VisiblePosition::inlineBoxAndOffset const): Deleted.
     15
    1162020-11-12  Zalan Bujtas  <zalan@apple.com>
    217
  • trunk/Source/WebCore/editing/VisiblePosition.cpp

    r269732 r269747  
    4141#include "Logging.h"
    4242#include "Range.h"
    43 #include "RenderBlock.h"
    44 #include "RootInlineBox.h"
     43#include "RenderBlockFlow.h"
    4544#include "SimpleRange.h"
    4645#include "Text.h"
     
    657656FloatRect VisiblePosition::absoluteSelectionBoundsForLine() const
    658657{
    659     auto inlineBox = inlineBoxAndOffset().box;
    660     if (!inlineBox)
     658    auto run = inlineRunAndOffset().run;
     659    if (!run)
    661660        return { };
    662661
    663     auto& root = inlineBox->root();
    664     auto localRect = FloatRect { root.x(), root.selectionTop(), root.width(), root.selectionHeight() };
    665     return root.renderer().localToAbsoluteQuad(localRect).boundingBox();
     662    auto line = run.line();
     663    auto localRect = FloatRect { FloatPoint { line->logicalLeft(), line->selectionTop() }, FloatPoint { line->logicalRight(), line->selectionBottom() } };
     664    if (!line->isHorizontal())
     665        localRect = localRect.transposedRect();
     666
     667    return line->containingBlock().localToAbsoluteQuad(localRect).boundingBox();
    666668}
    667669
  • trunk/Source/WebCore/editing/VisiblePosition.h

    r269662 r269747  
    7070    InlineRunAndOffset inlineRunAndOffset() const;
    7171    InlineRunAndOffset inlineRunAndOffset(TextDirection primaryDirection) const;
    72 
    73     InlineBoxAndOffset inlineBoxAndOffset() const;
    74     InlineBoxAndOffset inlineBoxAndOffset(TextDirection primaryDirection) const;
    7572
    7673    struct LocalCaretRect {
     
    182179}
    183180
    184 inline auto VisiblePosition::inlineBoxAndOffset() const -> InlineBoxAndOffset
    185 {
    186     return m_deepPosition.inlineBoxAndOffset(m_affinity);
    187 }
    188 
    189 inline auto VisiblePosition::inlineBoxAndOffset(TextDirection primaryDirection) const -> InlineBoxAndOffset
    190 {
    191     return m_deepPosition.inlineBoxAndOffset(m_affinity, primaryDirection);
    192 }
    193 
    194181} // namespace WebCore
    195182
Note: See TracChangeset for help on using the changeset viewer.