Fix text insert when dn < 0

This commit is contained in:
Gabriel Wong 2017-12-01 10:56:28 +07:00
parent c5ef61c034
commit c6b8bcdfd3

View file

@ -151,9 +151,13 @@ extension KeymanWebViewController: WKScriptMessageHandler {
let dn = Int(fragment[dnRange.upperBound..<sRange.lowerBound])!
let s = fragment[sRange.upperBound...]
// KMW uses dn == -1 to perform special processing of deadkeys.
// This is handled outside of Swift so we don't delete any characters.
let numCharsToDelete = max(0, dn)
let newText = String(s).stringFromUTF16CodeUnits() ?? ""
insertText(self, numCharsToDelete: dn, newText: newText)
delegate?.insertText(self, numCharsToDelete: dn, newText: newText)
insertText(self, numCharsToDelete: numCharsToDelete, newText: newText)
delegate?.insertText(self, numCharsToDelete: numCharsToDelete, newText: newText)
} else if fragment.hasPrefix("#showKeyPreview-") {
let xKey = fragment.range(of: "+x=")!
let yKey = fragment.range(of: "+y=")!