Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e3415c365a3f9135590b552cbf9326cc2bbf9c6d
      
https://github.com/WebKit/WebKit/commit/e3415c365a3f9135590b552cbf9326cc2bbf9c6d
  Author: Wenson Hsieh <[email protected]>
  Date:   2023-09-10 (Sun, 10 Sep 2023)

  Changed paths:
    A 
LayoutTests/editing/text-placeholder/removing-placeholder-restores-selection-expected.txt
    A 
LayoutTests/editing/text-placeholder/removing-placeholder-restores-selection.html
    M Source/WebCore/editing/Editor.cpp

  Log Message:
  -----------
  [iOS] Mail compose loses focus after long pressing and inserting text using  
Pencil
https://bugs.webkit.org/show_bug.cgi?id=261388
rdar://114253457

Reviewed by Aditya Keerthi.

When tapping and holding over text in Mail compose to insert text by scribbling 
with  Pencil, we
insert a text placeholder at the beginning of the scribble interaction, and 
remove it after
committing the final recognized text.

Currently, the implementation of `Editor::removeTextPlaceholder` 
(unsuccessfully) attempts to
restore the selection to where it was prior to inserting the placeholder by 
saving the parent-
anchored equivalent DOM position before the placeholder element using 
`parentAnchoredEquivalent()`.
However, for a DOM position that's before or after the anchor node, the parent 
anchored equivalent
might end up returning a position anchored to the node itself. This causes the 
selection to be
"restored" to an position that's no longer in the DOM after removing the 
placeholder, which has the
effect of clearing out the selection entirely.

To fix this, we simply use the `positionInParentBeforeNode` helper instead, 
which actually
guarantees that we're anchored to an ancestor of the placeholder when computing 
the DOM position to
restore after removing the placeholder.

Test: editing/text-placeholder/removing-placeholder-restores-selection.html

* 
LayoutTests/editing/text-placeholder/removing-placeholder-restores-selection-expected.txt:
 Added.
* 
LayoutTests/editing/text-placeholder/removing-placeholder-restores-selection.html:
 Added.
* Source/WebCore/editing/Editor.cpp:
(WebCore::Editor::removeTextPlaceholder):

Canonical link: https://commits.webkit.org/267854@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to