Files
tubestation/editor/libeditor/AutoSelectionRestorer.cpp
Makoto Kato 11120016db Bug 1149826 - Part 1. Add eContentCommandReplaceText. r=masayuki
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
2024-07-26 06:38:52 +00:00

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