Skip to content

Commit 58eecfc

Browse files
[SuperEditor] - Don't take IME ownership on focus change when editor isn't mounted (Resolves #2869) (#2870)
1 parent 3985e52 commit 58eecfc

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

super_editor/lib/src/default_editor/document_ime/document_ime_interaction_policies.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,18 @@ class _ImeFocusPolicyState extends State<ImeFocusPolicy> {
9898

9999
@override
100100
void dispose() {
101+
_focusNode.removeListener(_onFocusChange);
101102
if (widget.focusNode == null) {
102103
_focusNode.dispose();
103104
}
104105
super.dispose();
105106
}
106107

107108
void _onFocusChange() {
109+
if (!mounted) {
110+
return;
111+
}
112+
108113
if (_focusNode.hasFocus && !SuperIme.instance.isOwner(widget.inputId)) {
109114
// We have focus but we don't own the IME. Take it over.
110115
SuperIme.instance.takeOwnership(widget.inputId);
@@ -416,7 +421,6 @@ class _DocumentSelectionOpenAndCloseImePolicyState extends State<DocumentSelecti
416421

417422
if (!_wasAttached || SuperIme.instance.isInputAttachedToOS(widget.inputId)) {
418423
// We didn't go from closed to open. Our policy doesn't apply.
419-
420424
return;
421425
}
422426

0 commit comments

Comments
 (0)