aboutsummaryrefslogtreecommitdiff
path: root/development/atom/fix-ime-events-handler-electron-1.4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'development/atom/fix-ime-events-handler-electron-1.4.patch')
-rw-r--r--development/atom/fix-ime-events-handler-electron-1.4.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/development/atom/fix-ime-events-handler-electron-1.4.patch b/development/atom/fix-ime-events-handler-electron-1.4.patch
new file mode 100644
index 0000000000000..db5681d4fd5ae
--- /dev/null
+++ b/development/atom/fix-ime-events-handler-electron-1.4.patch
@@ -0,0 +1,47 @@
+--- a/src/text-editor-component.coffee
++++ b/src/text-editor-component.coffee
+@@ -110,6 +110,7 @@ class TextEditorComponent
+ @updateSync()
+ @checkForVisibilityChange()
+ @initialized = true
++ @checkpointForIME = null
+
+ destroy: ->
+ @mounted = false
+@@ -305,19 +306,20 @@ class TextEditorComponent
+ # User escape to cancel
+ # 4. compositionend fired
+ # OR User chooses a completion
+- # 4. compositionend fired
+- # 5. textInput fired; event.data == the completion string
++ # 4. textInput fired; event.data == the completion string
++ # 5. compositionend fired
+
+- checkpoint = null
+ @domNode.addEventListener 'compositionstart', =>
+ if @openedAccentedCharacterMenu
+ @editor.selectLeft()
+ @openedAccentedCharacterMenu = false
+- checkpoint = @editor.createCheckpoint()
++ @checkpointForIME = @editor.createCheckpoint()
+ @domNode.addEventListener 'compositionupdate', (event) =>
+ @editor.insertText(event.data, select: true)
+ @domNode.addEventListener 'compositionend', (event) =>
+- @editor.revertToCheckpoint(checkpoint)
++ if @checkpointForIME
++ @editor.revertToCheckpoint(@checkpointForIME)
++ @checkpointForIME = null
+ event.target.value = ''
+
+ # Listen for selection changes and store the currently selected text
+@@ -354,6 +356,10 @@ class TextEditorComponent
+ onTextInput: (event) =>
+ event.stopPropagation()
+
++ if @checkpointForIME
++ @editor.revertToCheckpoint(@checkpointForIME)
++ @checkpointForIME = null
++
+ # WARNING: If we call preventDefault on the input of a space character,
+ # then the browser interprets the spacebar keypress as a page-down command,
+ # causing spaces to scroll elements containing editors. This is impossible