Skip to content

Commit 8f69b05

Browse files
authored
Merge pull request #811 from zonble/master
Enhance candidate state handling for Plain Bopomofo input mode
2 parents c7b3864 + 2e5940c commit 8f69b05

3 files changed

Lines changed: 28 additions & 3 deletions

File tree

Source/Data/BPMFPunctuations.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ _ _half_punctuation_HanyuPinyin__ 0.0
563563
= _punctuation_list_+ 0.0
564564
= _punctuation_list_= 0.0
565565
\ _punctuation_list_\ 0.0
566-
/ _punctuation_list_\ 0.0
566+
/ _punctuation_list_/ 0.0
567567
— _punctuation_list__ 0.0
568568
… _punctuation_list__ 0.0
569569
- _punctuation_list__ 0.0

Source/Data/associated-punctuation.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,15 @@
4141
︽-_punctuation_Hsu_<-︾-_punctuation_Hsu_> -4
4242
(-_punctuation_(-)-_punctuation_) -4
4343
〈-_punctuation_HanyuPinyin_<-〉-_punctuation_HanyuPinyin_> -4
44+
「-_punctuation_list_[-」-_punctuation_list_] -4
45+
『-_punctuation_list_{-』-_punctuation_list_} -4
46+
《-_punctuation_list_{-》-_punctuation_list_} -4
47+
〔-_punctuation_list_{-〕-_punctuation_list_} -4
48+
{-_punctuation_list_{-}-_punctuation_list_} -4
49+
〈-_punctuation_list_{-〉-_punctuation_list_} -4
50+
【-_punctuation_list_{-】-_punctuation_list_} -4
51+
〖-_punctuation_list_{-〗-_punctuation_list_} -4
52+
〈-_punctuation_list_<-〉-_punctuation_list_> -4
53+
《-_punctuation_list_<-》-_punctuation_list_> -4
54+
︿-_punctuation_list_<-﹀-_punctuation_list_> -4
55+
︽-_punctuation_list_<-︾-_punctuation_list_> -4

Source/KeyHandler.mm

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,8 +1403,21 @@ - (BOOL)_handleCandidateState:(InputState *)state
14031403
}
14041404
_grid->insertReading(key);
14051405
[self _walk];
1406-
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
1407-
stateCallback(inputting);
1406+
if (_inputMode == InputModePlainBopomofo) {
1407+
InputStateChoosingCandidate *candidateState = [self _buildCandidateStateFromInputtingState:(InputStateInputting *)[self buildInputtingState] useVerticalMode:input.useVerticalMode];
1408+
if (candidateState.candidates.count == 1) {
1409+
[self clear];
1410+
InputStateCommitting *committing = [[InputStateCommitting alloc] initWithPoppedText:candidateState.candidates.firstObject.value];
1411+
stateCallback(committing);
1412+
InputStateEmpty *empty = [[InputStateEmpty alloc] init];
1413+
stateCallback(empty);
1414+
} else {
1415+
stateCallback(candidateState);
1416+
}
1417+
} else {
1418+
InputStateInputting *inputting = (InputStateInputting *)[self buildInputtingState];
1419+
stateCallback(inputting);
1420+
}
14081421
return YES;
14091422
}
14101423
}

0 commit comments

Comments
 (0)