SessionCtl // GCD the init() and IMK-related methods.

This commit is contained in:
ShikiSuen 2022-11-05 08:11:49 +08:00
parent bd0fe1bacc
commit 8f7d452a1d
1 changed files with 41 additions and 33 deletions

View File

@ -136,11 +136,14 @@ public class SessionCtl: IMKInputController {
/// - inputClient: /// - inputClient:
override public init!(server: IMKServer!, delegate: Any!, client inputClient: Any!) { override public init!(server: IMKServer!, delegate: Any!, client inputClient: Any!) {
super.init(server: server, delegate: delegate, client: inputClient) super.init(server: server, delegate: delegate, client: inputClient)
inputHandler.delegate = self DispatchQueue.main.async { [self] in
syncBaseLMPrefs() inputHandler.delegate = self
// syncBaseLMPrefs()
activateServer(inputClient) //
inputMode = .init(rawValue: PrefMgr.shared.mostRecentInputMode) ?? .imeModeNULL activateServer(inputClient)
// GCD didSet
inputMode = .init(rawValue: PrefMgr.shared.mostRecentInputMode) ?? .imeModeNULL
}
} }
} }
@ -148,7 +151,6 @@ public class SessionCtl: IMKInputController {
extension SessionCtl { extension SessionCtl {
/// 使 /// 使
/// - Remark:
public func setKeyLayout() { public func setKeyLayout() {
guard let client = client(), let myID = Bundle.main.bundleIdentifier, !myID.isEmpty, guard let client = client(), let myID = Bundle.main.bundleIdentifier, !myID.isEmpty,
clientBundleIdentifier != myID clientBundleIdentifier != myID
@ -184,40 +186,44 @@ extension SessionCtl {
/// - Parameter sender: 使 /// - Parameter sender: 使
public override func activateServer(_ sender: Any!) { public override func activateServer(_ sender: Any!) {
_ = sender // _ = sender //
UserDefaults.standard.synchronize() DispatchQueue.main.async { [self] in
if Self.allInstances.contains(self) { return } UserDefaults.standard.synchronize()
if Self.allInstances.contains(self) { return }
// activateServer nil // activateServer nil
// //
if inputHandler.delegate == nil { inputHandler.delegate = self } if inputHandler.delegate == nil { inputHandler.delegate = self }
// setValue() IMK activateServer() setValue() // setValue() IMK activateServer() setValue()
inputHandler.clear() // handle State.Empty() inputHandler.clear() // handle State.Empty()
inputHandler.ensureKeyboardParser() inputHandler.ensureKeyboardParser()
Self.theShiftKeyDetector.alsoToggleWithLShift = PrefMgr.shared.togglingAlphanumericalModeWithLShift Self.theShiftKeyDetector.alsoToggleWithLShift = PrefMgr.shared.togglingAlphanumericalModeWithLShift
if #available(macOS 10.15, *) { if #available(macOS 10.15, *) {
if isASCIIMode, PrefMgr.shared.disableShiftTogglingAlphanumericalMode { isASCIIMode = false } if isASCIIMode, PrefMgr.shared.disableShiftTogglingAlphanumericalMode { isASCIIMode = false }
}
DispatchQueue.main.async {
UpdateSputnik.shared.checkForUpdate(forced: false, url: kUpdateInfoSourceURL)
}
state = IMEState.ofEmpty()
isActivated = true //
Self.allInstances.insert(self)
setKeyLayout()
} }
DispatchQueue.main.async {
UpdateSputnik.shared.checkForUpdate(forced: false, url: kUpdateInfoSourceURL)
}
state = IMEState.ofEmpty()
isActivated = true //
Self.allInstances.insert(self)
setKeyLayout()
} }
/// ///
/// - Parameter sender: 使 /// - Parameter sender: 使
public override func deactivateServer(_ sender: Any!) { public override func deactivateServer(_ sender: Any!) {
_ = sender // _ = sender //
isActivated = false DispatchQueue.main.async { [self] in
resetInputHandler() // Empty isActivated = false
switchState(IMEState.ofDeactivated()) resetInputHandler() // Empty
Self.allInstances.remove(self) switchState(IMEState.ofDeactivated())
Self.allInstances.remove(self)
}
} }
/// ///
@ -230,9 +236,11 @@ extension SessionCtl {
public override func setValue(_ value: Any!, forTag tag: Int, client sender: Any!) { public override func setValue(_ value: Any!, forTag tag: Int, client sender: Any!) {
_ = tag // _ = tag //
_ = sender // _ = sender //
let mostRecentInputMode = PrefMgr.shared.mostRecentInputMode DispatchQueue.main.async { [self] in
inputMode = .init(rawValue: value as? String ?? mostRecentInputMode) ?? .imeModeNULL let mostRecentInputMode = PrefMgr.shared.mostRecentInputMode
Self.isVerticalTyping = isVerticalTyping inputMode = .init(rawValue: value as? String ?? mostRecentInputMode) ?? .imeModeNULL
Self.isVerticalTyping = isVerticalTyping
}
} }
/// ///