Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compose 1.2. Check if the input method popup is correctly placed on the screen #2040

Closed
igordmn opened this issue Apr 27, 2022 · 2 comments · Fixed by JetBrains/compose-multiplatform-core#339
Assignees
Labels
bug Something isn't working desktop input Touch, mouse, keyboard input related

Comments

@igordmn
Copy link
Collaborator

igordmn commented Apr 27, 2022

In Compose 1.2 this method was deprecated, and it isn't called from anywhere now. This method sets the current position of the text, which is used to position the input method popup.

  1. Switch to Chinese layout
  2. Focus on some text field
  3. Popup's position should be near the text field
@igordmn igordmn added bug Something isn't working input Touch, mouse, keyboard input related labels Apr 27, 2022
@igordmn igordmn self-assigned this Apr 27, 2022
@igordmn
Copy link
Collaborator Author

igordmn commented Dec 1, 2022

Expected:
image

Actual:
image

igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Dec 1, 2022
Fixes JetBrains/compose-multiplatform#2040
Fixes JetBrains/compose-multiplatform#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains/compose-multiplatform#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Dec 5, 2022
* PlatformTextInputService. Undeprecate notifyFocusedRect

Fixes JetBrains/compose-multiplatform#2040
Fixes JetBrains/compose-multiplatform#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains/compose-multiplatform#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.

* Keep @deprecated until we don't merget this into AOSP
copybara-service bot pushed a commit to androidx/androidx that referenced this issue Jan 6, 2023
Fixes JetBrains/compose-multiplatform#2040
Fixes JetBrains/compose-multiplatform#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains/compose-multiplatform#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.

Bug: b/262648050
Change-Id: I23a0425b573a644fcc114a2b60d7bbbdaf5b04ed
Test: manual on Windows (./gradlew run1 -Pandroidx.compose.multiplatformEnabled=true), with Chinese keyboard layout
Relnote: `notifyFocusedRect` methods in `TextInputSession` and `TextInputService` are not deprecated again.
eymar pushed a commit to JetBrains/compose-multiplatform-core that referenced this issue Jan 13, 2023
* PlatformTextInputService. Undeprecate notifyFocusedRect

Fixes JetBrains/compose-multiplatform#2040
Fixes JetBrains/compose-multiplatform#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains/compose-multiplatform#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.

* Keep @deprecated until we don't merget this into AOSP
MatkovIvan pushed a commit to MatkovIvan/compose-multiplatform that referenced this issue May 10, 2023
* PlatformTextInputService. Undeprecate notifyFocusedRect

Fixes JetBrains#2040
Fixes JetBrains#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.

* Keep @deprecated until we don't merget this into AOSP
igordmn added a commit to JetBrains/compose-multiplatform-core that referenced this issue Nov 15, 2023
* PlatformTextInputService. Undeprecate notifyFocusedRect

Fixes JetBrains/compose-multiplatform#2040
Fixes JetBrains/compose-multiplatform#2493

notifyFocusedRect was deprecated in https://android-review.googlesource.com/c/platform/frameworks/support/+/1959647

On Android, before deprecation this method was used to scroll to the focused text input.
This functionality was extracted to the text field itself, but we had another functionality on the other platforms.
On Desktop we show text input popup near text input (for some languages):
JetBrains/compose-multiplatform#2040 (comment)

I think that this method is the right choice to implement this functionality, but I am not completely sure. Here my thoughts about alternatives:

1. Use BringIntoViewRequester. Not sure that it is possible, because its purpose - to show the view to the user, not use the passed information to determine the text popup position
2. Get information about focused area from another source that is not related to text input. For example, we can inject FocusManager, and retrieve the focused rect from it. Probably not a good idea, because the rect of arbitrary focused node isn't the same thing as the rect of focused input area.

* Keep @deprecated until we don't merget this into AOSP
@okushnikov
Copy link

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working desktop input Touch, mouse, keyboard input related
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants