Remove the Terminal.app workaround

It was needed in the early days of McBopomofo, but is no longer so.
This commit is contained in:
Lukhnos Liu 2022-02-14 21:07:24 -08:00
parent d9e1417fa1
commit 4aaef97296
1 changed files with 0 additions and 18 deletions

View File

@ -52,7 +52,6 @@ class McBopomofoInputMethodController: IMKInputController {
// MARK: - // MARK: -
private var currentCandidateClient: Any? private var currentCandidateClient: Any?
private var currentDeferredClient: Any?
private var keyHandler: KeyHandler = KeyHandler() private var keyHandler: KeyHandler = KeyHandler()
private var state: InputState = InputState.Empty() private var state: InputState = InputState.Empty()
@ -118,7 +117,6 @@ class McBopomofoInputMethodController: IMKInputController {
// Override the keyboard layout. Use US if not set. // Override the keyboard layout. Use US if not set.
(client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: Preferences.basisKeyboardLayout) (client as? IMKTextInput)?.overrideKeyboard(withKeyboardNamed: Preferences.basisKeyboardLayout)
// reset the state // reset the state
currentDeferredClient = nil
currentCandidateClient = nil currentCandidateClient = nil
keyHandler.clear() keyHandler.clear()
@ -176,12 +174,6 @@ class McBopomofoInputMethodController: IMKInputController {
var textFrame = NSRect.zero var textFrame = NSRect.zero
let attributes: [AnyHashable: Any]? = (client as? IMKTextInput)?.attributes(forCharacterIndex: 0, lineHeightRectangle: &textFrame) let attributes: [AnyHashable: Any]? = (client as? IMKTextInput)?.attributes(forCharacterIndex: 0, lineHeightRectangle: &textFrame)
let useVerticalMode = (attributes?["IMKTextOrientation"] as? NSNumber)?.intValue == 0 || false let useVerticalMode = (attributes?["IMKTextOrientation"] as? NSNumber)?.intValue == 0 || false
if (client as? IMKTextInput)?.bundleIdentifier() == "com.apple.Terminal" &&
String(describing: client.self) == "IPMDServerClientWrapper" {
currentDeferredClient = client
}
let input = KeyHandlerInput(event: event, isVerticalMode: useVerticalMode) let input = KeyHandlerInput(event: event, isVerticalMode: useVerticalMode)
let result = keyHandler.handle(input: input, state: state) { newState in let result = keyHandler.handle(input: input, state: state) { newState in
@ -309,20 +301,10 @@ extension McBopomofoInputMethodController {
if buffer.isEmpty { if buffer.isEmpty {
return return
} }
// if it's Terminal, we don't commit at the first call (the client of which will not be IPMDServerClientWrapper)
// then we defer the update in the next runloop round -- so that the composing buffer is not
// meaninglessly flushed, an annoying bug in Terminal.app since Mac OS X 10.5
if (client as? IMKTextInput)?.bundleIdentifier() == "com.apple.Terminal" && String(describing: client.self) != "IPMDServerClientWrapper" {
let innerCurrentDeferredClient = currentDeferredClient
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {
(innerCurrentDeferredClient as? IMKTextInput)?.insertText(buffer, replacementRange: NSRange(location: NSNotFound, length: NSNotFound))
}
}
(client as? IMKTextInput)?.insertText(buffer, replacementRange: NSRange(location: NSNotFound, length: NSNotFound)) (client as? IMKTextInput)?.insertText(buffer, replacementRange: NSRange(location: NSNotFound, length: NSNotFound))
} }
private func handle(state: InputState.Deactivated, previous: InputState, client: Any?) { private func handle(state: InputState.Deactivated, previous: InputState, client: Any?) {
currentDeferredClient = nil
currentCandidateClient = nil currentCandidateClient = nil
gCurrentCandidateController?.delegate = nil gCurrentCandidateController?.delegate = nil