Repo // Refuse ineffective candidate key events.

This commit is contained in:
ShikiSuen 2022-10-08 18:48:33 +08:00
parent b510ee5c1e
commit ec35ebf24b
2 changed files with 3 additions and 2 deletions

View File

@ -202,6 +202,7 @@ public class CtlCandidateTDK: CtlCandidate {
override public func candidateIndexAtKeyLabelIndex(_ id: Int) -> Int {
let arrCurrentLine = thePool.candidateLines[thePool.currentLineNumber]
if !(0..<arrCurrentLine.count).contains(id) { return -114_514 }
let actualID = max(0, min(id, arrCurrentLine.count - 1))
return arrCurrentLine[actualID].index
}

View File

@ -242,7 +242,7 @@ extension KeyHandler {
if index != NSNotFound {
let candidateIndex = ctlCandidate.candidateIndexAtKeyLabelIndex(index)
if candidateIndex != Int.max {
if candidateIndex != -114_514 {
delegate?.candidateSelectionCalledByKeyHandler(at: candidateIndex)
return true
}
@ -282,7 +282,7 @@ extension KeyHandler {
if shouldAutoSelectCandidate {
let candidateIndex = ctlCandidate.candidateIndexAtKeyLabelIndex(0)
if candidateIndex != Int.max {
if candidateIndex != -114_514 {
delegate?.candidateSelectionCalledByKeyHandler(at: candidateIndex)
stateCallback(IMEState.ofAbortion())
return handle(