keymanapp / keyman

Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
https://keyman.com/
Other
377 stars 104 forks source link

bug(android): Keyboard is flashing behind the Keyboard picker menu after clicking the Info icon #8868

Closed bharanidharanj closed 7 months ago

bharanidharanj commented 1 year ago

Describe the bug

I noticed that the keyboard background is blinking every time whenever I click the keyboard info icon in the Keyboard Picker menu.

Reproduce the bug

  1. Install Keyman 17.0.113-alpha build.
  2. Open Keyman In-App.
  3. Download and install Khmer Angkor keyboard.
  4. Long press the globe key to open the Keyboard picker menu.
  5. Click the Info (i) icon against the Central Khmer (Khmer, Cambodia..) label name.
  6. Here, I noticed that the Keyman app which is running behind the Keyboard picker menu is blinking.

I have attached the video file for reference.

https://github.com/keymanapp/keyman/assets/19683143/e39e08ce-cf2e-4d12-8f3a-0a688db7448f

Expected behavior

Clicking the Info icon in Keyboard picker menu should not affect the Keyman keyboard background.

Related issues

8007

Keyman apps

Keyman version

17.0.113-alpah build

Operating system

Android 5.0, 9.0, 12.0

Device

Redmi Note 8 Pro, API 31 emulator

Target application

No response

Browser

No response

Keyboard name

No response

Keyboard version

No response

Language name

No response

Additional context

No response

jahorton commented 1 year ago

See also: #8007. It's the same sort of flicker seen there.

jahorton commented 7 months ago

After fixing #8534 and synchronizing all pending entries in the JS queue as they come in, I did an analysis of all the re-layout calls for the keyboard for three cases. I'll log the entries and relevant call-stack data below:

App Load

First setLayoutParams call:

Second:

But way, way down the line as part of Android-internal stuff.

Third:

Fourth:

Main app screen finally appears, Get Started shows.

Fifth:

Sixth:

(System keyboard) is active; the actual desired keyboard hasn't shown yet.

There is no seventh.

Keyboard with predictions -> keyboard without predictions

sil_euro_latin -> sil_ipa

First:

And that's it!

Keyboard without predictions -> keyboard with predictions

sil_ipa -> sil_euro_latin

First:

Second:


Note: no device rotations were performed during this investigation; I imagine that's covered by onConfigurationChanged, but am presently not 100% sure about that.