Skip to content

Commit 7f41f65

Browse files
committed
fix(chord_composer): allow editor to define BackSpace key behavior
1 parent 2ab76bc commit 7f41f65

File tree

1 file changed

+1
-28
lines changed

1 file changed

+1
-28
lines changed

src/rime/gear/chord_composer.cc

+1-28
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,7 @@ ProcessResult ChordComposer::ProcessFunctionKey(const KeyEvent& key_event) {
5656
raw_sequence_.clear();
5757
}
5858
ClearChord();
59-
} else if (ch == XK_BackSpace) {
60-
// invalidate raw sequence
61-
raw_sequence_.clear();
62-
ClearChord();
63-
if (DeleteLastSyllable()) {
64-
return kAccepted;
65-
}
66-
} else if (ch == XK_Escape) {
59+
} else if (ch == XK_BackSpace || ch == XK_Escape) {
6760
// clear the raw sequence
6861
raw_sequence_.clear();
6962
ClearChord();
@@ -195,26 +188,6 @@ void ChordComposer::ClearChord() {
195188
}
196189
}
197190

198-
bool ChordComposer::DeleteLastSyllable() {
199-
if (!engine_)
200-
return false;
201-
Context* ctx = engine_->context();
202-
Composition& comp = ctx->composition();
203-
const string& input(ctx->input());
204-
size_t start = comp.empty() ? 0 : comp.back().start;
205-
size_t caret_pos = ctx->caret_pos();
206-
if (input.empty() || caret_pos <= start)
207-
return false;
208-
size_t deleted = 0;
209-
for (; caret_pos > start; --caret_pos, ++deleted) {
210-
if (deleted > 0 &&
211-
delimiter_.find(input[caret_pos - 1]) != string::npos)
212-
break;
213-
}
214-
ctx->PopInput(deleted);
215-
return true;
216-
}
217-
218191
void ChordComposer::OnContextUpdate(Context* ctx) {
219192
if (ctx->IsComposing() && ctx->input() != kZeroWidthSpace) {
220193
composing_ = true;

0 commit comments

Comments
 (0)