Skip to content

Commit 4803a24

Browse files
committed
fix: reset on slide backspace when preedit in keyboard and on drag right edge
1 parent 7e6b9a5 commit 4803a24

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

entry/src/main/ets/InputMethodExtensionAbility/model/KeyboardController.ets

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ export class KeyboardController {
2020
private textInputClient: inputMethodEngine.InputClient | undefined = undefined;
2121
private keyboardController: inputMethodEngine.KeyboardController | undefined = undefined;
2222
private initialized = false
23+
// Virtual keyboard states
24+
private hasCandidates = false
25+
private hasPreeditOrAux = false
26+
// Textarea states
2327
private preedit = ''
2428
private preeditIndex = 0 // Bad initial value that must be reset on focus.
2529
private textWithPreedit = ''
@@ -81,6 +85,19 @@ export class KeyboardController {
8185
case 'CLIENT_PREEDIT':
8286
this.updatePreviewText(event.data.preedit, event.data.cursorPos)
8387
break
88+
case 'CLEAR':
89+
this.hasCandidates = false
90+
this.hasPreeditOrAux = false
91+
this.sendEvent(event)
92+
break
93+
case 'CANDIDATES':
94+
this.hasCandidates = true
95+
this.sendEvent(event)
96+
break
97+
case 'PREEDIT':
98+
this.hasPreeditOrAux = event.data.auxUp !== '' || event.data.preedit !== ''
99+
this.sendEvent(event)
100+
break
84101
default:
85102
this.sendEvent(event)
86103
break
@@ -229,7 +246,7 @@ export class KeyboardController {
229246
}
230247

231248
private handleBackspaceSlide(direction: 'LEFT' | 'RIGHT' | 'RELEASE') {
232-
if (this.preedit) {
249+
if (this.preedit || this.hasCandidates || this.hasPreeditOrAux) {
233250
if (direction === 'RELEASE') {
234251
this.processResult(fcitx.reset())
235252
}
@@ -366,6 +383,7 @@ export class KeyboardController {
366383
})
367384
this.panel.on('hide', () => {
368385
console.debug('hide')
386+
this.processResult(fcitx.reset()) // Need it when dragging right edge to collapse keyboard.
369387
this.sendEvent({ type: 'HIDE' })
370388
})
371389
this.panel.resize(width, containerHeight)

0 commit comments

Comments
 (0)