PR #16146 introduced a problem with selecting a different font as
display font so that we always ended up with not setting the font.
This was caused by the font filenames now being a URL (which is necessary
because they get processed by the web engine). However, the Android code
checks for the existence of the font in order to create the typeface,
which only works for local paths.
This PR modifies and simplifies `KMKeyboard.getFontFilename` to return the
full path, renames `KMKeyboard.txtFont` and `KMKeyboard.oskFont` to make
it clearer that they contain a path and not a URL.
Also initialize `KMKeyboard.oskFontPath` with empty string instead of
`null`. This makes it consistent with` txtFontPath` and with the
documented behavior of `KMManager.getKeyboardOskFontFilename()` (which
returns `KMKeyboard.oskFontPath`).
Follows: #16146Fixes: #16187
Build-bot: release:android
Addresses review feedback from Marc and Darcy:
- Add JavaDoc comments to getKeyboardHeightMin() and getKeyboardHeightMax()
explaining the purpose, parameters, and return values
- Implement separate pending height tracking per keyboard type (in-app/system)
and orientation (portrait/landscape) instead of a single flag
- Add four preference keys following KMKey_ naming convention:
KMKey_PendingHeightUpdate_InappPortrait, KMKey_PendingHeightUpdate_InappLandscape,
KMKey_PendingHeightUpdate_SystemPortrait, KMKey_PendingHeightUpdate_SystemLandscape
- Create helper function getPendingHeightKey() to determine the correct key
- Create setPendingHeightUpdate() and getAndClearPendingHeightUpdate() functions
- Fix applyKeyboardHeight() to use new helper functions and remove broken
heightApplied variable and duplicate pending height logic
- Update KMKeyboard.onResume() to use getAndClearPendingHeightUpdate()
- Add documentation links for getKeyboardHeightMin and getKeyboardHeightMax
in index.md
Handling invalid orientations
updating orientation logic
refresh webview height if ApplyKeyboardHeight() has been applied without KB active
I ran into a bug building this code into app-builders and fixed it downstream. This commit pushes it upstream.
While resize dialog is open:
- Keyboard WebView is NOT loaded (isKeyboardLoaded() == false)
- ACTION_UP saves to SharedPreferences: ✅ Works
-But skips WebView layout update: ❌ Because keyboard not loaded
- User exits dialog, keyboard appears:
- If the keyboard WebView loads and reads from SharedPreferences properly: ✅ Works
- But if there's a timing issue or the WebView had old layout params cached: ❌ Touch zone mismatch