SessionCtl // Change the way of handling `.flagsChanged`.
- Learn something from mozc.
This commit is contained in:
parent
6b85ab8970
commit
c7cc8cdbbc
|
@ -26,6 +26,9 @@ extension SessionCtl {
|
||||||
|
|
||||||
// MARK: 前置處理
|
// MARK: 前置處理
|
||||||
|
|
||||||
|
// 雖然在 recognizedEvents 當中有過定義,但這裡還是再多施加一道保險。
|
||||||
|
if event.type != .keyDown, event.type != .flagsChanged { return false }
|
||||||
|
|
||||||
// 如果是 deactivated 狀態的話,強制糾正其為 empty()。
|
// 如果是 deactivated 狀態的話,強制糾正其為 empty()。
|
||||||
if let client = client(), state.type == .ofDeactivated {
|
if let client = client(), state.type == .ofDeactivated {
|
||||||
state = IMEState.ofEmpty()
|
state = IMEState.ofEmpty()
|
||||||
|
@ -92,9 +95,9 @@ extension SessionCtl {
|
||||||
|
|
||||||
/// 這裡仍舊需要判斷 flags。之前使輸入法狀態卡住無法敲漢字的問題已在 InputHandler 內修復。
|
/// 這裡仍舊需要判斷 flags。之前使輸入法狀態卡住無法敲漢字的問題已在 InputHandler 內修復。
|
||||||
/// 這裡不判斷 flags 的話,用方向鍵前後定位光標之後,再次試圖觸發組字區時、反而會在首次按鍵時失敗。
|
/// 這裡不判斷 flags 的話,用方向鍵前後定位光標之後,再次試圖觸發組字區時、反而會在首次按鍵時失敗。
|
||||||
/// 同時注意:必須在 event.type == .flagsChanged 結尾插入 return false,
|
/// 同時注意:必須針對 event.type == .flagsChanged 提前返回結果,
|
||||||
/// 否則,每次處理這種判斷時都會因為讀取 event.characters? 而觸發 NSInternalInconsistencyException。
|
/// 否則,每次處理這種判斷時都會因為讀取 event.characters? 而觸發 NSInternalInconsistencyException。
|
||||||
if event.type == .flagsChanged { return false }
|
if event.type == .flagsChanged { return true }
|
||||||
|
|
||||||
/// 沒有文字輸入客體的話,就不要再往下處理了。
|
/// 沒有文字輸入客體的話,就不要再往下處理了。
|
||||||
guard let inputHandler = inputHandler, client() != nil else { return false }
|
guard let inputHandler = inputHandler, client() != nil else { return false }
|
||||||
|
|
Loading…
Reference in New Issue