Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0b4f1f99201e4820a2b8727d68a6ba57b3785457
      
https://github.com/WebKit/WebKit/commit/0b4f1f99201e4820a2b8727d68a6ba57b3785457
  Author: Wenson Hsieh <wenson_hs...@apple.com>
  Date:   2023-11-17 (Fri, 17 Nov 2023)

  Changed paths:
    M Source/WebKit/Platform/spi/ios/UIKitSPI.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

  Log Message:
  -----------
  Replace `-layoutHasChanged` and `-updateForChangedSelection` with 
`-[UIAsyncTextInputDelegate invalidateTextEntryContext]`
https://bugs.webkit.org/show_bug.cgi?id=265054
rdar://118467892

Reviewed by Megan Gardner.

Adopt `-[UIAsyncTextInputDelegate invalidateTextEntryContext]`, which is a 
direct replacement for
`-[UIKeyboardImpl updateForChangedSelection]`. Since the latter also updates 
marked text UI if
needed, we can also replace the `-layoutHasChanged` call with this new method 
as well.

* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKRelativeTextRange isEmpty]):

Some drive-by fixes after the introduction of `WKRelativeTextRange` in 
270847@main:

1.  Enforce type safety in `-selectionRectsForRange:` and 
`-caretRectForPosition:`, in case any
    system client calls these methods using a relative range.

2.  Fix `-[WKRelativeTextRange isEmpty]` so that it returns `YES` only in the 
case where the offsets
    are equal, *and* the anchors are the same.

3.  Return `nil` in `-positionFromPosition:offset:` and 
`-textRangeFromPosition:toPosition:` instead
    of `WKRelativeText{Range|Position}`, if the given positions are either not 
already relative to
    the selection, or the given positions are not identical to the selection 
start/end. This is
    possible if UIKit asks for `-markedTextRange`, and then asks for positions 
offset from the start
    or end of the marked text.

(-[WKContentView replaceForWebView:]):

Another drive-by fix: the plan for handling `-replace:` has pivoted slightly, 
such that we're going
to instead call a new protocol method on the sytem input delegate, instead of 
calling into the
superclass. Adjust for that here.

(-[WKContentView caretRectForPosition:]):
(-[WKContentView selectionRectsForRange:]):
(-[WKContentView _isAnchoredToCurrentSelection:]):
(-[WKContentView textRangeFromPosition:toPosition:]):
(-[WKContentView positionFromPosition:offset:]):
(-[WKContentView _updateInputContextAfterBlurringAndRefocusingElement]):
(-[WKContentView _selectionChanged]):
(-[WKContentView setAsyncSystemInputDelegate:]):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to