From e39bba23f457667ce383e5adbdabadc510f56387 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 4 Jun 2022 00:27:28 +0800 Subject: [PATCH] InputState // Fix an upstream bug of handling literal marked range. --- .../ControllerModules/InputState.swift | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Source/Modules/ControllerModules/InputState.swift b/Source/Modules/ControllerModules/InputState.swift index d6c81878..afdc0a46 100644 --- a/Source/Modules/ControllerModules/InputState.swift +++ b/Source/Modules/ControllerModules/InputState.swift @@ -156,6 +156,11 @@ class InputState { private var allowedMarkRange = 2...mgrPrefs.maxCandidateLength private(set) var markerIndex: Int = 0 { didSet { markerIndex = max(markerIndex, 0) } } private(set) var markedRange: Range + private var literalMarkedRange: Range { + let lowerBoundLiteral = composingBuffer.charIndexLiteral(from: markedRange.lowerBound) + let upperBoundLiteral = composingBuffer.charIndexLiteral(from: markedRange.upperBound) + return lowerBoundLiteral.. allowedMarkRange.upperBound { + } else if literalMarkedRange.count > allowedMarkRange.upperBound { ctlInputMethod.tooltipController.setColor(state: .denialOverflow) return String( format: NSLocalizedString( @@ -192,9 +197,7 @@ class InputState { ) } - let literalBegin = composingBuffer.charIndexLiteral(from: markedRange.lowerBound) - let literalEnd = composingBuffer.charIndexLiteral(from: markedRange.upperBound) - let selectedReadings = readings[literalBegin..