From f163c702f83b21bce2c41c37176a0ca2b187350e Mon Sep 17 00:00:00 2001 From: zonble Date: Sat, 2 Dec 2023 21:56:26 +0800 Subject: [PATCH 1/3] Uses a switch/case to match states. --- Source/InputMethodController.swift | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Source/InputMethodController.swift b/Source/InputMethodController.swift index 5ba4bac7..d51802fa 100644 --- a/Source/InputMethodController.swift +++ b/Source/InputMethodController.swift @@ -269,27 +269,28 @@ extension McBopomofoInputMethodController { let previous = state state = newState - if let newState = newState as? InputState.Deactivated { + switch newState { + case let newState as InputState.Deactivated: handle(state: newState, previous: previous, client: client) - // Force transition to Empty, so that when activateServer is - // invoked again, the controller is already in the Empty state. state = .Empty() - } else if let newState = newState as? InputState.Empty { + case let newState as InputState.Empty: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.EmptyIgnoringPreviousState { + case let newState as InputState.EmptyIgnoringPreviousState: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.Committing { + case let newState as InputState.Committing: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.Inputting { + case let newState as InputState.Inputting: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.Marking { + case let newState as InputState.Marking: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.ChoosingCandidate { + case let newState as InputState.ChoosingCandidate: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.AssociatedPhrases { + case let newState as InputState.AssociatedPhrases: handle(state: newState, previous: previous, client: client) - } else if let newState = newState as? InputState.Big5 { + case let newState as InputState.Big5: handle(state: newState, previous: previous, client: client) + default: + break } } From 4b9b50adc63722f8946c05cc1b09bffe1ab48d20 Mon Sep 17 00:00:00 2001 From: zonble Date: Sat, 2 Dec 2023 22:13:24 +0800 Subject: [PATCH 2/3] Tunes the icons in the preference view. --- Source/PreferencesWindowController.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/PreferencesWindowController.swift b/Source/PreferencesWindowController.swift index 9e846377..fa2c7a5e 100644 --- a/Source/PreferencesWindowController.swift +++ b/Source/PreferencesWindowController.swift @@ -185,7 +185,14 @@ fileprivate let kWindowTitleHeight: CGFloat = 78 return newImage } - menuItem.image = resize(image) + var resizedImage = resize(image) + // On newer version of macOS, the icons became black and white + // so we make them template images so it could look better + // on dark mode. + if #available(macOS 10.16, *) { + resizedImage.isTemplate = true + } + menuItem.image = resizedImage } if sourceID == "com.apple.keylayout.US" { From 23db9f47fe9c798e356ab8daf9c5b74dbf5c464e Mon Sep 17 00:00:00 2001 From: zonble Date: Mon, 4 Dec 2023 11:49:15 +0800 Subject: [PATCH 3/3] Suppresses a warning. --- Source/PreferencesWindowController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/PreferencesWindowController.swift b/Source/PreferencesWindowController.swift index fa2c7a5e..9c756eff 100644 --- a/Source/PreferencesWindowController.swift +++ b/Source/PreferencesWindowController.swift @@ -185,7 +185,7 @@ fileprivate let kWindowTitleHeight: CGFloat = 78 return newImage } - var resizedImage = resize(image) + let resizedImage = resize(image) // On newer version of macOS, the icons became black and white // so we make them template images so it could look better // on dark mode.