summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-11-02 08:33:16 +0100
committerwolfbeast <mcwerewolf@gmail.com>2018-11-02 08:33:16 +0100
commit09fec033ec18a5c0eb29815924114016cee32a00 (patch)
treeba4801aaa5362aea0846e9dabb2fa9defe1c9352 /widget
parent9dc6bf850afece8e66b6c65aa8c5a81ee51005d7 (diff)
downloadUXP-09fec033ec18a5c0eb29815924114016cee32a00.tar
UXP-09fec033ec18a5c0eb29815924114016cee32a00.tar.gz
UXP-09fec033ec18a5c0eb29815924114016cee32a00.tar.lz
UXP-09fec033ec18a5c0eb29815924114016cee32a00.tar.xz
UXP-09fec033ec18a5c0eb29815924114016cee32a00.zip
Don't allocate PendingAction twice.
Diffstat (limited to 'widget')
-rw-r--r--widget/windows/TSFTextStore.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/widget/windows/TSFTextStore.cpp b/widget/windows/TSFTextStore.cpp
index 7224126b8..c80de831c 100644
--- a/widget/windows/TSFTextStore.cpp
+++ b/widget/windows/TSFTextStore.cpp
@@ -4247,14 +4247,14 @@ TSFTextStore::InsertTextAtSelectionInternal(const nsAString& aInsertStr,
TS_SELECTION_ACP oldSelection = contentForTSF.Selection().ACP();
if (!mComposition.IsComposing()) {
// Use a temporary composition to contain the text
- PendingAction* compositionStart = mPendingActions.AppendElement();
+ PendingAction* compositionStart = mPendingActions.AppendElements(2);
+ PendingAction* compositionEnd = compositionStart + 1;
compositionStart->mType = PendingAction::COMPOSITION_START;
compositionStart->mSelectionStart = oldSelection.acpStart;
compositionStart->mSelectionLength =
oldSelection.acpEnd - oldSelection.acpStart;
compositionStart->mAdjustSelection = false;
- PendingAction* compositionEnd = mPendingActions.AppendElement();
compositionEnd->mType = PendingAction::COMPOSITION_END;
compositionEnd->mData = aInsertStr;
@@ -4455,10 +4455,12 @@ TSFTextStore::RecordCompositionEndAction()
}
// When only setting selection is necessary, we should append it.
if (pendingAction.mAdjustSelection) {
+ LONG selectionStart = pendingAction.mSelectionStart;
+ LONG selectionLength = pendingAction.mSelectionLength;
PendingAction* setSelection = mPendingActions.AppendElement();
setSelection->mType = PendingAction::SET_SELECTION;
- setSelection->mSelectionStart = pendingAction.mSelectionStart;
- setSelection->mSelectionLength = pendingAction.mSelectionLength;
+ setSelection->mSelectionStart = selectionStart;
+ setSelection->mSelectionLength = selectionLength;
setSelection->mSelectionReversed = false;
}
// Remove the redundant pending composition.