fun onTextInput()

in sample/src/main/kotlin/org/jetbrains/desktop/sample/linux/SkikoSampleLinux.kt [615:645]


    fun onTextInput(event: Event.TextInput, app: Application): EventHandlerResult {
        composedText = ""
        event.deleteSurroundingTextData?.let { deleteSurroundingTextData ->
            val deleteStart = cursorOffset - utf8OffsetToUtf16Offset(text, deleteSurroundingTextData.beforeLengthInBytes)
            val deleteEnd = cursorOffset + utf8OffsetToUtf16Offset(text, deleteSurroundingTextData.afterLengthInBytes)
            this.text.delete(deleteStart, deleteEnd)
        }
        event.commitStringData?.let { commitStringData ->
            commitStringData.text?.let { commitString ->
                this.text.insert(cursorOffset, commitString)
                cursorOffset += commitString.length
            }
        }
        event.preeditStringData?.let { preeditStringData ->
            deleteSelection()
            cursorVisible = !(preeditStringData.cursorBeginBytePos == -1 && preeditStringData.cursorEndBytePos == -1)
            preeditStringData.text?.let { preeditString ->
                composedText = preeditString
                composedTextStartOffset = utf8OffsetToUtf16Offset(preeditString, preeditStringData.cursorBeginBytePos)
                composedTextEndOffset = utf8OffsetToUtf16Offset(preeditString, preeditStringData.cursorEndBytePos)
            }
        } ?: run {
            composedTextStartOffset = null
            composedTextEndOffset = null
            cursorVisible = true
        }
        if (event.deleteSurroundingTextData != null || event.commitStringData != null) {
            app.textInputUpdate(createTextInputContext(changeCausedByInputMethod = true))
        }
        return EventHandlerResult.Stop
    }