[webkit-changes] [WebKit/WebKit] c35d1f: [Writing Tools] Reverting a list transformation le...
Richard Robinson
noreply at github.com
Tue Jun 11 22:17:28 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c35d1fad75d58b9de8042a06f0fc21a9d411544e
https://github.com/WebKit/WebKit/commit/c35d1fad75d58b9de8042a06f0fc21a9d411544e
Author: Richard Robinson <richard_robinson2 at apple.com>
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
More information about the webkit-changes
mailing list