From 950c9ea5548e026ee0dd17572af96076209f5975 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 14 Jun 2023 23:34:56 +0800 Subject: [PATCH] InputHandler // Refactor handleCandidate(). --- .../InputHandler_HandleCandidate.swift | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/Source/Modules/InputHandler_HandleCandidate.swift b/Source/Modules/InputHandler_HandleCandidate.swift index 6d831ea7..d46f82e8 100644 --- a/Source/Modules/InputHandler_HandleCandidate.swift +++ b/Source/Modules/InputHandler_HandleCandidate.swift @@ -150,25 +150,18 @@ extension InputHandler { if !input.isShiftHold { return false } } - var index: Int = NSNotFound - let match: String = + var index: Int? + let matched: String = (state.type == .ofAssociates) ? input.inputTextIgnoringModifiers ?? "" : input.text - - let selectionKeys = delegate.selectionKeys - - for j in 0 ..< selectionKeys.count { - let label = selectionKeys.map(\.description)[j] - if match.compare(label, options: .caseInsensitive, range: nil, locale: .current) == .orderedSame { - index = j - break - } + checkSelectionKey: for keyPair in delegate.selectionKeys.enumerated() { + guard matched.lowercased() == keyPair.element.lowercased() else { continue } + index = Int(keyPair.offset) + break checkSelectionKey } - if index != NSNotFound { - if let candidateIndex = ctlCandidate.candidateIndexAtKeyLabelIndex(index) { - delegate.candidateSelectionConfirmedByInputHandler(at: candidateIndex) - return true - } + if let index = index, let candidateIndex = ctlCandidate.candidateIndexAtKeyLabelIndex(index) { + delegate.candidateSelectionConfirmedByInputHandler(at: candidateIndex) + return true } if state.type == .ofAssociates { return false }