diff --git a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java index 5ca3de5807..4f5bd29dd3 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java +++ b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java @@ -250,8 +250,6 @@ public class SystemKeyboard extends InputMethodService implements OnKeyboardEven if (exText != null) exText = null; } - // Initialize keyboard options - KMManager.sendOptionsToKeyboard(); } @Override diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/AdjustLongpressDelayActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/AdjustLongpressDelayActivity.java index e79cb917ff..596c247d09 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/AdjustLongpressDelayActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/AdjustLongpressDelayActivity.java @@ -133,7 +133,6 @@ public class AdjustLongpressDelayActivity extends BaseActivity { // Store the longpress delay as a reference // and then update KeymanWeb with the longpress delay KMManager.setLongpressDelay(currentDelayTimeMS); - KMManager.sendOptionsToKeyboard(); super.onBackPressed(); } diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java index 908d2f4538..37eb8eb685 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java +++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/MainActivity.java @@ -475,8 +475,7 @@ public class MainActivity extends BaseActivity implements OnKeyboardEventListene @Override public void onKeyboardLoaded(KeyboardType keyboardType) { - // Initialize keyboard options - KMManager.sendOptionsToKeyboard(); + // Do nothing } @Override diff --git a/android/KMEA/app/src/main/assets/android-host.js b/android/KMEA/app/src/main/assets/android-host.js index 0bd199b4d6..ad440d493a 100644 --- a/android/KMEA/app/src/main/assets/android-host.js +++ b/android/KMEA/app/src/main/assets/android-host.js @@ -13,6 +13,7 @@ var bannerImagePath = ''; var bannerHTMLContents = ''; var fragmentToggle = 0; var deferredBannerCall; +var longpressDelay = null; var sentryManager = new KeymanSentryManager({ hostPlatform: "android" @@ -71,6 +72,10 @@ function init() { keyman.refreshOskLayout(); } + // Initialize the longpress delay + if(longpressDelay !== null) { + setLongpressDelay(longpressDelay); + } }); keyman.addEventListener('keyboardloaded', setIsChiral); @@ -128,11 +133,10 @@ function notifyHost(event, params) { // Update the KeymanWeb longpress delay // delay is in milliseconds function setLongpressDelay(delay) { - if (keyman.osk) { + longpressDelay = delay; + if (keyman && keyman.osk) { keyman.osk.gestureParams.longpress.waitLength = delay; console_debug('setLongpressDelay('+delay+')'); - } else { - window.console.log('setLongpressDelay error: keyman.osk undefined'); } } diff --git a/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java b/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java index 0e4c261232..72e2d29811 100644 --- a/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java +++ b/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java @@ -722,6 +722,7 @@ public final class KMManager { } keyboard.setBanner(KMManager.BannerType.HTML); keyboard.showBanner(true); + sendLongpressDelay(); } setEngineWebViewVersionStatus(appContext, keyboard); } @@ -921,7 +922,7 @@ public final class KMManager { copyAsset(context, KMFilename_KmwCss, "", true); copyAsset(context, KMFilename_KmwGlobeHintCss, "", true); copyAsset(context, KMFilename_Osk_Ttf_Font, "", true); - + // Needed until our minimum version of Chrome is 61.0+. copyAsset(context, KMFilename_JSPolyfill2, "", true); @@ -2124,7 +2125,7 @@ public final class KMManager { } /** - * Set the longpress delay (in milliseconds) as a stored preference. + * Set the longpress delay (in milliseconds) as a stored preference and sends to KeymanWeb. * Valid range is 300 ms to 1500 ms. Returns true if the preference is successfully stored. * @param longpressDelay - int longpress delay in milliseconds * @return boolean @@ -2140,17 +2141,19 @@ public final class KMManager { editor.putInt(KMKey_LongpressDelay, longpressDelay); editor.commit(); + // Send longpress delay to KeymanWeb + sendLongpressDelay(); + return true; } /** - * Sends options to the KeymanWeb keyboard. + * Sends longpress delay to the KeymanWeb keyboard. * 1. number of milliseconds to trigger a longpress gesture. - * This method requires a keyboard to be loaded for the value to take effect. */ - public static void sendOptionsToKeyboard() { + private static void sendLongpressDelay() { int longpressDelay = getLongpressDelay(); - if (isKeyboardLoaded(KeyboardType.KEYBOARD_TYPE_INAPP)) { + if (InAppKeyboard != null) { InAppKeyboard.loadJavascript(KMString.format("setLongpressDelay(%d)", longpressDelay)); }