KeyHandler // Simplify state conditioning in handle().
This commit is contained in:
parent
c79c4aeb2e
commit
df74b5b234
|
@ -56,9 +56,8 @@ extension KeyHandler {
|
||||||
// 提前過濾掉一些不合規的按鍵訊號輸入,免得相關按鍵訊號被送給 Megrez 引發輸入法崩潰。
|
// 提前過濾掉一些不合規的按鍵訊號輸入,免得相關按鍵訊號被送給 Megrez 引發輸入法崩潰。
|
||||||
if input.isInvalidInput {
|
if input.isInvalidInput {
|
||||||
// 在「.Empty(IgnoringPreviousState) 與 .Deactivated」狀態下的首次不合規按鍵輸入可以直接放行。
|
// 在「.Empty(IgnoringPreviousState) 與 .Deactivated」狀態下的首次不合規按鍵輸入可以直接放行。
|
||||||
if state is InputState.Empty || state is InputState.Deactivated
|
// 因為「.EmptyIgnorePreviousState」會在處理之後被自動轉為「.Empty」,所以不需要單獨判斷。
|
||||||
|| state is InputState.EmptyIgnoringPreviousState
|
if state is InputState.Empty || state is InputState.Deactivated {
|
||||||
{
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
IME.prtDebugIntel("550BCF7B: KeyHandler just refused an invalid input.")
|
IME.prtDebugIntel("550BCF7B: KeyHandler just refused an invalid input.")
|
||||||
|
|
|
@ -356,6 +356,7 @@ extension ctlInputMethod {
|
||||||
_ = state // 防止格式整理工具毀掉與此對應的參數。
|
_ = state // 防止格式整理工具毀掉與此對應的參數。
|
||||||
ctlCandidateCurrent.visible = false
|
ctlCandidateCurrent.visible = false
|
||||||
hideTooltip()
|
hideTooltip()
|
||||||
|
// 全專案用以判斷「.EmptyIgnoringPreviousState」的地方僅此一處。
|
||||||
if let previous = previous as? InputState.NotEmpty,
|
if let previous = previous as? InputState.NotEmpty,
|
||||||
!(state is InputState.EmptyIgnoringPreviousState)
|
!(state is InputState.EmptyIgnoringPreviousState)
|
||||||
{
|
{
|
||||||
|
|
|
@ -493,7 +493,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testInputting() {
|
func testInputting() {
|
||||||
|
@ -673,7 +673,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
|
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBackspaceToDeleteReading() {
|
func testBackspaceToDeleteReading() {
|
||||||
|
@ -707,7 +707,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
state = newState
|
state = newState
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBackspaceAtBegin() {
|
func testBackspaceAtBegin() {
|
||||||
|
@ -829,7 +829,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
|
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testCursorWithReading() {
|
func testCursorWithReading() {
|
||||||
|
@ -1543,7 +1543,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
|
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
mgrPrefs.escToCleanInputBuffer = enabled
|
mgrPrefs.escToCleanInputBuffer = enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1611,7 +1611,7 @@ class KeyHandlerTestsNormalCHS: XCTestCase {
|
||||||
} errorCallback: {
|
} errorCallback: {
|
||||||
}
|
}
|
||||||
|
|
||||||
XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
mgrPrefs.escToCleanInputBuffer = enabled
|
mgrPrefs.escToCleanInputBuffer = enabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,7 +266,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase {
|
||||||
}
|
}
|
||||||
print("Expecting EmptyIgnoringPreviousState.")
|
print("Expecting EmptyIgnoringPreviousState.")
|
||||||
print("\(state)")
|
print("\(state)")
|
||||||
// XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
// XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Further bug-hunting needed.
|
// TODO: Further bug-hunting needed.
|
||||||
|
@ -291,7 +291,7 @@ class KeyHandlerTestsSCPCCHT: XCTestCase {
|
||||||
}
|
}
|
||||||
print("Expecting EmptyIgnoringPreviousState.")
|
print("Expecting EmptyIgnoringPreviousState.")
|
||||||
print("\(state)")
|
print("\(state)")
|
||||||
// XCTAssertTrue(state is InputState.EmptyIgnoringPreviousState, "\(state)")
|
// XCTAssertTrue(state is InputState.Empty, "\(state)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Further bug-hunting needed.
|
// TODO: Further bug-hunting needed.
|
||||||
|
@ -314,9 +314,9 @@ class KeyHandlerTestsSCPCCHT: XCTestCase {
|
||||||
print("Expecting AssociatedPhrases.")
|
print("Expecting AssociatedPhrases.")
|
||||||
print("\(state)")
|
print("\(state)")
|
||||||
// XCTAssertTrue(state is InputState.AssociatedPhrases, "\(state)")
|
// XCTAssertTrue(state is InputState.AssociatedPhrases, "\(state)")
|
||||||
if let state = state as? InputState.AssociatedPhrases {
|
// if let state = state as? InputState.AssociatedPhrases {
|
||||||
// XCTAssertTrue(state.candidates.contains("百五"))
|
// XCTAssertTrue(state.candidates.contains("百五"))
|
||||||
}
|
// }
|
||||||
mgrPrefs.associatedPhrasesEnabled = enabled
|
mgrPrefs.associatedPhrasesEnabled = enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue