From 54a6f0d29faf886a24a50287cd386171054d324d Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 11 Aug 2017 15:57:46 -0600 Subject: [PATCH] Clear hidden input compositionstart on Chrome 56 We use the value of the hidden input to display a preview of the composition, but it might already contain spaces from previous keystrokes, since we don't call preventDefault when spaces are inserted. --- src/text-editor-component.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 0c80ef52c..79105f868 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -1644,6 +1644,10 @@ class TextEditorComponent { // 4. compositionend fired // 5. textInput fired; event.data == the completion string didCompositionStart () { + if (parseInt(process.versions.chrome) === 56) { + this.getHiddenInput().value = '' + } + this.compositionCheckpoint = this.props.model.createCheckpoint() if (this.accentedCharacterMenuIsOpen) { this.props.model.selectLeft() @@ -1653,7 +1657,7 @@ class TextEditorComponent { didCompositionUpdate (event) { if (parseInt(process.versions.chrome) === 56) { process.nextTick(() => { - const previewText = this.refs.cursorsAndInput.refs.hiddenInput.value + const previewText = this.getHiddenInput().value this.props.model.insertText(previewText, {select: true}) }) } else { @@ -2815,6 +2819,10 @@ class TextEditorComponent { return this.props.inputEnabled != null ? this.props.inputEnabled : true } + getHiddenInput () { + return this.refs.cursorsAndInput.refs.hiddenInput + } + getPlatform () { return this.props.platform || process.platform }