Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/web_ui/lib/src/engine/text_editing/text_editing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1707,7 +1707,7 @@ class IOSTextEditingStrategy extends GloballyPositionedTextEditingStrategy {
subscriptions.add(DomSubscription(activeDomElement, 'blur',
(_) {
final bool isFastCallback = blurWatch.elapsed < _blurFastCallbackInterval;
if (windowHasFocus && isFastCallback) {
if (windowHasFocus || isFastCallback) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the original introduction of isFastCallback here #31718 , it is a bit strange that this code does not cause any test to fail.

From the explanation given here #31718 (comment) it sounds like we want to close the input connection when the "done" button is pressed on a keyboard. The logic without isFastCallback was only checking if the window had focus before refocusing the textfield. In the case of the "done" button this would cause the keyboard to stay open because the window has focus so the textfield is refocused. With windowHasFocus && isFastCallback, pressing the "done" button will close the input connection because it was not a fast callback. With windowHasFocus || isFastCallback it sounds like the "done" button would once again fall under the same issue where the keyboard can't hide because the window has focus. What do you think about this?

cc @mdebbar if you had any context on this issue.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't know this before. So we should find a way to detect the difference between clicking the done or TapTextFieldTapRegion.

activeDomElement.focus();
} else {
owner.sendTextConnectionClosedToFrameworkIfAny();
Expand Down