When using autocorrect, we should use `insertReplacementText` according to https://github.com/w3c/input-events/issues/152. So I would like to add eContentCommandReplaceText command for this. Also, this command has an option that is source string text. When processing text subsitution, parent process doesn't know whether target replaced text is modified. So I add this option for check. Differential Revision: https://phabricator.services.mozilla.com/D213511
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "AutoSelectionRestorer.h"
|
|
|
|
namespace mozilla {
|
|
|
|
AutoSelectionRestorer::AutoSelectionRestorer(EditorBase* aEditor) {
|
|
if (!aEditor) {
|
|
return;
|
|
}
|
|
if (aEditor->ArePreservingSelection()) {
|
|
// We already have initialized mParentData::mSavedSelection, so this must
|
|
// be nested call.
|
|
return;
|
|
}
|
|
MOZ_ASSERT(aEditor->IsEditActionDataAvailable());
|
|
mEditor = aEditor;
|
|
mEditor->PreserveSelectionAcrossActions();
|
|
}
|
|
|
|
AutoSelectionRestorer::~AutoSelectionRestorer() {
|
|
if (!mEditor || !mEditor->ArePreservingSelection()) {
|
|
return;
|
|
}
|
|
DebugOnly<nsresult> rvIgnored = mEditor->RestorePreservedSelection();
|
|
NS_WARNING_ASSERTION(
|
|
NS_SUCCEEDED(rvIgnored),
|
|
"EditorBase::RestorePreservedSelection() failed, but ignored");
|
|
}
|
|
|
|
void AutoSelectionRestorer::Abort() {
|
|
if (mEditor) {
|
|
mEditor->StopPreservingSelection();
|
|
}
|
|
}
|
|
|
|
} // namespace mozilla
|