Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c35d1fad75d58b9de8042a06f0fc21a9d411544e
      
https://github.com/WebKit/WebKit/commit/c35d1fad75d58b9de8042a06f0fc21a9d411544e
  Author: Richard Robinson <[email protected]>
  Date:   2024-06-11 (Tue, 11 Jun 2024)

  Changed paths:
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/editing/ReplaceSelectionCommand.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M 
Source/WebCore/page/unified-text-replacement/UnifiedTextReplacementController.h
    M 
Source/WebCore/page/unified-text-replacement/UnifiedTextReplacementController.mm
    M Source/WebKit/WebProcess/WebPage/Cocoa/TextIndicatorStyleController.mm

  Log Message:
  -----------
  [Writing Tools] Reverting a list transformation leaves a single errant bullet
https://bugs.webkit.org/show_bug.cgi?id=275336
rdar://126139492

Reviewed by Wenson Hsieh and Tim Horton.

Previously, we were undoing and restoring the text by creating and storing 
document fragments
and replacing the current selection. However, this approach is flawed for cases 
where lists
or table elements are used, since selecting all contents will exclude the first 
list bullet.

Fix by changing the implementation to instead just unapply and reapply the 
editing command itself,
which does not rely on selection.

Also, slightly refactor all the stateful instance variables into a single state 
struct.

* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/editing/ReplaceSelectionCommand.h:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::willBeginTextReplacementSession):
(WebCore::Page::didBeginTextReplacementSession):
(WebCore::Page::textReplacementSessionDidReceiveReplacements):
(WebCore::Page::textReplacementSessionDidUpdateStateForReplacement):
(WebCore::Page::didEndTextReplacementSession):
(WebCore::Page::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebCore::Page::contextRangeForSessionWithID const):
(WebCore::Page::textReplacementSessionDidReceiveEditAction):
* Source/WebCore/page/Page.h:
(WebCore::Page::unifiedTextReplacementController const): Deleted.
* 
Source/WebCore/page/unified-text-replacement/UnifiedTextReplacementController.h:
* 
Source/WebCore/page/unified-text-replacement/UnifiedTextReplacementController.mm:
(WebCore::UnifiedTextReplacementController::willBeginTextReplacementSession):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidReceiveReplacements):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidUpdateStateForReplacement):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidReceiveTextWithReplacementRange):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidReceiveEditAction<UnifiedTextReplacement::Session::ReplacementType::PlainText>):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidReceiveEditAction<UnifiedTextReplacement::Session::ReplacementType::RichText>):
(WebCore::UnifiedTextReplacementController::textReplacementSessionDidReceiveEditAction):
(WebCore::UnifiedTextReplacementController::didEndTextReplacementSession<UnifiedTextReplacement::Session::ReplacementType::PlainText>):
(WebCore::UnifiedTextReplacementController::didEndTextReplacementSession):
(WebCore::UnifiedTextReplacementController::updateStateForSelectedReplacementIfNeeded):
(WebCore::UnifiedTextReplacementController::contextRangeForSessionWithID const):
(WebCore::UnifiedTextReplacementController::stateForSession):
(WebCore::UnifiedTextReplacementController::replaceContentsOfRangeInSessionInternal):
(WebCore::UnifiedTextReplacementController::replaceContentsOfRangeInSession):
* Source/WebKit/WebProcess/WebPage/Cocoa/TextIndicatorStyleController.mm:
(WebKit::TextIndicatorStyleController::contextRangeForSessionWithID const):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to