diff --git a/CommonInputMethod/CIMConfiguration.h b/CommonInputMethod/CIMConfiguration.h index e32f5cee..1e1fe942 100644 --- a/CommonInputMethod/CIMConfiguration.h +++ b/CommonInputMethod/CIMConfiguration.h @@ -23,12 +23,13 @@ FOUNDATION_EXTERN NSString *kCIMOptionKeyBehavior; FOUNDATION_EXTERN NSString *kCIMHangulCombinationModeComposing; FOUNDATION_EXTERN NSString *kCIMHangulCombinationModeCommiting; -#define CIMConfigurationBoolItemCount 4 +#define CIMConfigurationBoolItemCount 5 /* Common */ FOUNDATION_EXTERN NSString *kCIMSharedInputManager; /* Gureum */ FOUNDATION_EXTERN NSString *kCIMAutosaveDefaultInputMode; FOUNDATION_EXTERN NSString *kCIMRomanModeByEscapeKey; +FOUNDATION_EXTERN NSString *kCIMZeroWidthSpaceForLayoutExchange; FOUNDATION_EXTERN NSString *kCIMZeroWidthSpaceForBlankComposedString; @@ -66,6 +67,7 @@ extern CIMConfiguration *CIMDefaultUserConfiguration; BOOL sharedInputManager; BOOL autosaveDefaultInputMode; BOOL romanModeByEscapeKey; + BOOL zeroWidthSpaceForLayoutExchange; BOOL zeroWidthSpaceForBlankComposedString; } @property(nonatomic, retain) NSUserDefaults *userDefaults; diff --git a/CommonInputMethod/CIMConfiguration.m b/CommonInputMethod/CIMConfiguration.m index 28c3b41c..0a58bc24 100644 --- a/CommonInputMethod/CIMConfiguration.m +++ b/CommonInputMethod/CIMConfiguration.m @@ -22,6 +22,7 @@ NSString * kCIMSharedInputManager = @"CIMSharedInputManager"; NSString * kCIMAutosaveDefaultInputMode = @"CIMAutosaveDefaultInputMode"; NSString * kCIMRomanModeByEscapeKey = @"CIMRomanModeByEscapeKey"; +NSString * kCIMZeroWidthSpaceForLayoutExchange = @"CIMZeroWidthSpaceForLayoutExchange"; NSString * kCIMZeroWidthSpaceForBlankComposedString = @"CIMZeroWidthSpaceForBlankComposedString"; @@ -70,6 +71,7 @@ - (id)initWithUserDefaults:(NSUserDefaults *)aUserDefaults { { kCIMAutosaveDefaultInputMode, &self->autosaveDefaultInputMode, YES }, { kCIMRomanModeByEscapeKey, &self->romanModeByEscapeKey, NO }, { kCIMZeroWidthSpaceForBlankComposedString, &self->zeroWidthSpaceForBlankComposedString, NO }, + { kCIMZeroWidthSpaceForLayoutExchange, &self->zeroWidthSpaceForLayoutExchange, NO }, }; for (NSInteger i = 0; i < CIMConfigurationBoolItemCount; i++ ) { self->boolItems[i] = tempBoolItems[i]; diff --git a/CommonInputMethod/CIMInputController.m b/CommonInputMethod/CIMInputController.m index b7034e9f..0eb081cb 100644 --- a/CommonInputMethod/CIMInputController.m +++ b/CommonInputMethod/CIMInputController.m @@ -158,7 +158,7 @@ - (void)cancelCompositionEvent:(CIMInputController *)controller { - (NSString *)_internalComposedString { NSString *string = self.composer.composedString; - if (string.length == 0 && CIMSharedInputManager.needsFakeComposedString) { + if (string.length == 0 && CIMSharedInputManager.needsFakeComposedString && CIMSharedInputManager.configuration->zeroWidthSpaceForLayoutExchange) { string = @"\u200b"; } return string; diff --git a/GureumKIM/GureumPreferencesWindowController.h b/GureumKIM/GureumPreferencesWindowController.h index 14deb9e2..8ca0233b 100644 --- a/GureumKIM/GureumPreferencesWindowController.h +++ b/GureumKIM/GureumPreferencesWindowController.h @@ -25,7 +25,8 @@ IBOutlet NSComboBox *optionKeyBehaviorComboBox; IBOutlet NSButton *romanModeByEscapeKeyCheckbox; - + IBOutlet NSButton *zeroWidthSpaceForLayoutExchangeCheckbox; + /* Hangul Preferences */ IBOutlet SRRecorderCell *inputModeHanjaKeyRecorderCell; IBOutlet NSComboBox *hangulCombinationModeComposingComboBox; diff --git a/GureumKIM/GureumPreferencesWindowController.m b/GureumKIM/GureumPreferencesWindowController.m index 43ee0527..ec17f6e2 100644 --- a/GureumKIM/GureumPreferencesWindowController.m +++ b/GureumKIM/GureumPreferencesWindowController.m @@ -162,6 +162,7 @@ - (void)loadFromConfiguration { self->hangulCombinationModeCommitingComboBox.stringValue = GureumPreferencesHangulSyllablePresentations[configuration->hangulCombinationModeCommiting]; self->romanModeByEscapeKeyCheckbox.integerValue = configuration->romanModeByEscapeKey; + self->zeroWidthSpaceForLayoutExchangeCheckbox.integerValue = configuration->zeroWidthSpaceForLayoutExchange; self->zeroWidthSpaceForBlankComposedStringCheckbox.integerValue = configuration->zeroWidthSpaceForBlankComposedString; } @@ -181,6 +182,7 @@ - (void)saveToConfiguration:(id)sender { configuration->hangulCombinationModeCommiting = [GureumPreferencesHangulSyllablePresentations indexOfObject:self->hangulCombinationModeCommitingComboBox.stringValue]; configuration->romanModeByEscapeKey = self->romanModeByEscapeKeyCheckbox.integerValue; + configuration->zeroWidthSpaceForLayoutExchange = self->zeroWidthSpaceForLayoutExchangeCheckbox.integerValue; configuration->zeroWidthSpaceForBlankComposedString = self->zeroWidthSpaceForBlankComposedStringCheckbox.integerValue; [configuration saveAllConfigurations]; diff --git a/GureumKIM/preferences.xib b/GureumKIM/preferences.xib index 6f6c4de4..441d1436 100644 --- a/GureumKIM/preferences.xib +++ b/GureumKIM/preferences.xib @@ -1,8 +1,8 @@ - + - + @@ -21,6 +21,7 @@ + @@ -100,11 +101,11 @@ - + - + @@ -124,7 +125,7 @@ - + @@ -132,7 +133,7 @@ - + @@ -140,14 +141,14 @@ - + @@ -159,22 +160,30 @@ + - + - + @@ -193,7 +202,7 @@ - + @@ -208,6 +217,15 @@ + + + + + + + + +