IMEStateData // Optimize kanji conversation handling.

This commit is contained in:
ShikiSuen 2022-09-10 16:43:00 +08:00
parent a846022f1b
commit 6666e5ab8e
1 changed files with 12 additions and 9 deletions

View File

@ -9,13 +9,16 @@
import Foundation
public struct StateData {
var displayedText: String = "" {
didSet {
let result = IME.kanjiConversionIfRequired(displayedText)
if result.utf16.count == displayedText.utf16.count, result.count == displayedText.count {
displayedText = result
}
var displayedText: String = ""
var displayedTextConverted: String {
///
var result = IME.kanjiConversionIfRequired(displayedText)
if result.utf16.count != displayedText.utf16.count
|| result.count != displayedText.count
{
result = displayedText
}
return result
}
// MARK: Cursor & Marker & Range for UTF8
@ -86,7 +89,7 @@ public struct StateData {
var attributedStringNormal: NSAttributedString {
///
/// JIS
let attributedString = NSMutableAttributedString(string: displayedText)
let attributedString = NSMutableAttributedString(string: displayedTextConverted)
var newBegin = 0
for (i, neta) in displayTextSegments.enumerated() {
attributedString.setAttributes(
@ -104,7 +107,7 @@ public struct StateData {
var attributedStringMarking: NSAttributedString {
///
/// JIS
let attributedString = NSMutableAttributedString(string: displayedText)
let attributedString = NSMutableAttributedString(string: displayedTextConverted)
let end = u16MarkedRange.upperBound
attributedString.setAttributes(
@ -130,7 +133,7 @@ public struct StateData {
],
range: NSRange(
location: end,
length: displayedText.utf16.count - end
length: displayedTextConverted.utf16.count - end
)
)
return attributedString