From 337cf84c8b9bfd5c7b6067ed7d2cffd6b7bdb3f8 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 19 Nov 2022 00:38:36 +0800 Subject: [PATCH] SessionCtl // Use NSMutableOrderedSet in lieu of Swift.Set. --- Source/Modules/SessionCtl_Core.swift | 4 ++-- Source/Modules/SessionCtl_HandleStates.swift | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/Modules/SessionCtl_Core.swift b/Source/Modules/SessionCtl_Core.swift index c5de1332..7709179b 100644 --- a/Source/Modules/SessionCtl_Core.swift +++ b/Source/Modules/SessionCtl_Core.swift @@ -25,7 +25,7 @@ import UpdateSputnik /// 輸入會話創建一個控制器型別。因此,對於每個輸入會話,都有一個對應的 IMKInputController。 @objc(SessionCtl) // 必須加上 ObjC,因為 IMK 是用 ObjC 寫的。 public class SessionCtl: IMKInputController { - public static var allInstances: Set = .init() + public static var allInstances: NSMutableOrderedSet = .init() /// 標記狀態來聲明目前新增的詞彙是否需要賦以非常低的權重。 public static var areWeNerfing = false @@ -207,7 +207,7 @@ extension SessionCtl { state = IMEState.ofEmpty() isActivated = true // 登記啟用狀態。 - Self.allInstances.insert(self) + Self.allInstances.insert(self, at: 0) setKeyLayout() } } diff --git a/Source/Modules/SessionCtl_HandleStates.swift b/Source/Modules/SessionCtl_HandleStates.swift index beca11d9..7683b293 100644 --- a/Source/Modules/SessionCtl_HandleStates.swift +++ b/Source/Modules/SessionCtl_HandleStates.swift @@ -53,6 +53,7 @@ extension SessionCtl { // 所以在這裡糾偏一下、讓所有開啟了選字窗的會話重新顯示選字窗。 if PrefMgr.shared.useIMKCandidateWindow { for instance in Self.allInstances { + guard let instance = instance as? SessionCtl else { continue } guard let imkC = instance.ctlCandidateCurrent as? CtlCandidateIMK else { continue } if instance.state.isCandidateContainer, !imkC.visible { instance.handle(state: instance.state, replace: false)