KeyHandler // Extend consolidateCursorContext().

This commit is contained in:
ShikiSuen 2022-08-23 12:31:43 +08:00
parent a825178825
commit 49f1e53543
1 changed files with 11 additions and 5 deletions

View File

@ -140,20 +140,26 @@ public class KeyHandler {
///
/// v1.9.3 SP2 Bug v1.9.4
/// v2.0.2
/// - Parameter theCandidate:
func consolidateCursorContext(with theCandidate: Megrez.Compositor.Candidate) {
/// - Parameters:
/// - theCandidate:
/// - cursorSpecified: actualCandidateCursor
func consolidateCursorContext(with theCandidate: Megrez.Compositor.Candidate = .init(), cursorSpecified: Int? = nil) {
var cursorSpecified = cursorSpecified ?? actualCandidateCursor
if cursorSpecified != actualCandidateCursor {
cursorSpecified = max(0, min(cursorSpecified, compositor.width - 1)) //
}
let grid = compositor
var frontBoundaryEX = compositor.width - 1
var rearBoundaryEX = 0
if grid.overrideCandidate(theCandidate, at: actualCandidateCursor) {
guard let node = compositor.walkedNodes.findNode(at: actualCandidateCursor, target: &frontBoundaryEX) else {
if grid.overrideCandidate(theCandidate, at: cursorSpecified) {
guard let node = compositor.walkedNodes.findNode(at: cursorSpecified, target: &frontBoundaryEX) else {
return
}
rearBoundaryEX = max(0, frontBoundaryEX - node.keyArray.count)
}
var frontBoundary = 0
guard let node = compositor.walkedNodes.findNode(at: actualCandidateCursor, target: &frontBoundary) else { return }
guard let node = compositor.walkedNodes.findNode(at: cursorSpecified, target: &frontBoundary) else { return }
var rearBoundary = min(max(0, frontBoundary - node.keyArray.count), rearBoundaryEX) //
frontBoundary = max(min(frontBoundary, compositor.width), frontBoundaryEX) //