From 879f7bded9c17e6acafc8a7bc1d7af78d7ee9c05 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 22 Apr 2021 17:34:44 +0700 Subject: [PATCH 1/3] fix(web): Set banner when state is undefined --- web/source/osk/bannerManager.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/web/source/osk/bannerManager.ts b/web/source/osk/bannerManager.ts index 8a9d3bb43a..e1dba211dc 100644 --- a/web/source/osk/bannerManager.ts +++ b/web/source/osk/bannerManager.ts @@ -209,12 +209,10 @@ namespace com.keyman.osk { * @param state */ private selectBanner(state?: text.prediction.StateChangeEnum) { - let keyman = com.keyman.singleton; - // Only display a SuggestionBanner when LanguageProcessor states it is active.s if(state == 'active') { this.setBanner('suggestion'); - } else if(state == 'inactive') { + } else if(state == 'inactive' || state == undefined) { if(this.alwaysShow) { this.setBanner('image'); } else { @@ -226,7 +224,7 @@ namespace com.keyman.osk { // Triggers the initially-displayed suggestions.s suggestionBanner.postConfigure(); } - } + } } /** From ea266eef22fcfc0dc7b06b0b7f8a6be642b8efec Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 23 Apr 2021 08:30:44 +0700 Subject: [PATCH 2/3] change(web): better fix - no parameterless selectBanner calls --- web/source/osk/bannerManager.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/source/osk/bannerManager.ts b/web/source/osk/bannerManager.ts index e1dba211dc..ca7a4b19b3 100644 --- a/web/source/osk/bannerManager.ts +++ b/web/source/osk/bannerManager.ts @@ -143,6 +143,8 @@ namespace com.keyman.osk { this.alwaysShow = optionSpec[key]; break; case 'mayPredict': + // If this toggles our internal flag, it will generate events + // that reconfigures the banner (and internal engine state) appropriately. keyman.core.languageProcessor.mayPredict = optionSpec[key] break; case 'mayCorrect': @@ -157,8 +159,6 @@ namespace com.keyman.osk { } this._options[key] = optionSpec[key]; } - - this.selectBanner(); } /** @@ -208,11 +208,11 @@ namespace com.keyman.osk { * allowing logic to automatically hot-swap `Banner`s as needed. * @param state */ - private selectBanner(state?: text.prediction.StateChangeEnum) { + private selectBanner(state: text.prediction.StateChangeEnum) { // Only display a SuggestionBanner when LanguageProcessor states it is active.s if(state == 'active') { this.setBanner('suggestion'); - } else if(state == 'inactive' || state == undefined) { + } else if(state == 'inactive') { if(this.alwaysShow) { this.setBanner('image'); } else { From cb47deddf3066748249fe0eb0bcf8e352f9770e9 Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 23 Apr 2021 09:14:43 +0700 Subject: [PATCH 3/3] fix(web): banner init when prediction is disabled --- web/source/osk/bannerManager.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/source/osk/bannerManager.ts b/web/source/osk/bannerManager.ts index ca7a4b19b3..2ba3c7b95c 100644 --- a/web/source/osk/bannerManager.ts +++ b/web/source/osk/bannerManager.ts @@ -158,6 +158,11 @@ namespace com.keyman.osk { // Invalid option specified! } this._options[key] = optionSpec[key]; + + // If no banner instance exists yet, go with a safe, blank initialization. + if(!this.activeBanner) { + this.selectBanner('inactive'); + } } }