InputState // Only allow excluding existing words.

This commit is contained in:
ShikiSuen 2022-03-23 14:13:18 +08:00
parent fc3d150825
commit e3a1eb9b11
1 changed files with 5 additions and 0 deletions

View File

@ -158,6 +158,7 @@ class InputState: NSObject {
@objc private(set) var markerIndex: UInt
@objc private(set) var markedRange: NSRange
@objc private var deleteTargetExists = false
@objc var tooltip: String {
if composingBuffer.count != readings.count {
@ -192,6 +193,7 @@ class InputState: NSObject {
let joined = selectedReadings.joined(separator: "-")
let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined)
if exist {
deleteTargetExists = exist
TooltipController.backgroundColor = NSColor(red: 0.00, green: 0.18, blue: 0.13, alpha: 1.00)
TooltipController.textColor = NSColor(red: 0.00, green: 1.00, blue: 0.74, alpha: 1.00)
return String(format: NSLocalizedString("\"%@\" already exists, ENTER to boost its priority.", comment: ""), text)
@ -257,6 +259,9 @@ class InputState: NSObject {
if markedRange.length > kMaxMarkRangeLength {
return false
}
if ctlInputMethod.areWeDeleting && !deleteTargetExists {
return false
}
return markedRange.length >= kMinMarkRangeLength && markedRange.length <= kMaxMarkRangeLength
}