fix: backquote key will cause crash when using French IME (#892)

This commit is contained in:
Lucas 2024-09-13 19:23:39 +08:00 • committed by GitHub
commit b888202b9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 18 additions and 8 deletions

View file

@ -12,15 +12,20 @@ Future<void> onInsert(
final textInserted = insertion.textInserted; final textInserted = insertion.textInserted;
// character shortcut events // In France, the backtick key is used to toggle a character style.
final execution = await executeCharacterShortcutEvent( // We should prevent the execution of character shortcut events when the
editorState, // composing range is not collapsed.
textInserted, if (insertion.composing.isCollapsed) {
characterShortcutEvents, // execute character shortcut events
); final execution = await executeCharacterShortcutEvent(
editorState,
textInserted,
characterShortcutEvents,
);
if (execution) { if (execution) {
return; return;
}
} }
var selection = editorState.selection; var selection = editorState.selection;

View file

@ -5,7 +5,10 @@ import 'package:flutter/services.dart';
Future<void> onNonTextUpdate( Future<void> onNonTextUpdate(
TextEditingDeltaNonTextUpdate nonTextUpdate, TextEditingDeltaNonTextUpdate nonTextUpdate,
EditorState editorState, EditorState editorState,
List<CharacterShortcutEvent> characterShortcutEvents,
) async { ) async {
AppFlowyEditorLog.input.debug('onNonTextUpdate: $nonTextUpdate');
// update the selection on Windows // update the selection on Windows
// //
// when typing characters with CJK IME on Windows, a non-text update is sent // when typing characters with CJK IME on Windows, a non-text update is sent

View file

@ -79,6 +79,7 @@ class KeyboardServiceWidgetState extends State<KeyboardServiceWidget>
onNonTextUpdate: (nonTextUpdate) async => await onNonTextUpdate( onNonTextUpdate: (nonTextUpdate) async => await onNonTextUpdate(
nonTextUpdate, nonTextUpdate,
editorState, editorState,
widget.characterShortcutEvents,
), ),
onPerformAction: (action) async => await onPerformAction( onPerformAction: (action) async => await onPerformAction(
action, action,

View file

@ -14,6 +14,7 @@ void main() {
composing: TextRange(start: 0, end: 3), composing: TextRange(start: 0, end: 3),
), ),
EditorState.blank(), EditorState.blank(),
[],
); );
}); });
}); });