Show IME's composition text on screen.

The composition text should only show on screen temporarily and gets
disappered when input is cancelled or done. We simply mark the
composition as selected, so it can not only indicate this is composition
text instead of normal text, but also updates the composition without
adding new interfaces.
This commit is contained in:
Cheng Zhao
2013-09-14 19:51:15 +08:00
parent 0c839f419a
commit c9d4c761bb

View File

@@ -699,7 +699,18 @@ class Editor extends View
handleImeEvents: ->
@on 'cursor:moved', =>
@hiddenInput.offset(@getCursorView().offset())
cursorView = @getCursorView()
@hiddenInput.offset(cursorView.offset()) if cursorView.is(':visible')
startScreenPosition = null
@hiddenInput.on 'compositionstart', =>
startScreenPosition = @getCursorScreenPosition()
@hiddenInput.on 'compositionupdate', (e) =>
@insertText(e.originalEvent.data)
@selectToScreenPosition(startScreenPosition)
@hiddenInput.on 'compositionend', =>
@delete()
startScreenPosition = null
selectOnMousemoveUntilMouseup: ->
lastMoveEvent = null