diff --git a/web/source/kmwembedded.ts b/web/source/kmwembedded.ts index 9644141d10..4064dd9149 100644 --- a/web/source/kmwembedded.ts +++ b/web/source/kmwembedded.ts @@ -62,7 +62,7 @@ namespace com.keyman.osk { // #3718: No longer prepend base key to subkey array let _this = this; - let pendingLongpress = new embedded.PendingLongpress(key); + let pendingLongpress = new embedded.PendingLongpress(this, key); pendingLongpress.promise.then(function(delegator) { _this.subkeyDelegator = delegator; if(delegator) { @@ -297,7 +297,7 @@ namespace com.keyman.text { if(!isVisible) { if(delegator) { - delegator.resolve(null, null); + delegator.resolve(null); osk.vkbd.subkeyDelegator = null; } } @@ -382,7 +382,7 @@ namespace com.keyman.text { delegator = osk.vkbd.subkeyDelegator as com.keyman.osk.embedded.SubkeyDelegator; try { - delegator.resolve(keyName, osk.vkbd); + delegator.resolve(keyName); } catch (e) { let err = e as Error; console.warn(err.message); diff --git a/web/source/osk/embedded/pendingLongpress.ts b/web/source/osk/embedded/pendingLongpress.ts index bff829a472..8aa1983bc7 100644 --- a/web/source/osk/embedded/pendingLongpress.ts +++ b/web/source/osk/embedded/pendingLongpress.ts @@ -3,11 +3,13 @@ namespace com.keyman.osk.embedded { export class PendingLongpress { private resolver: (delegator: SubkeyDelegator) => void; + private readonly vkbd: VisualKeyboard; public readonly baseKey: KeyElement; public readonly promise: Promise; - constructor(e: KeyElement) { + constructor(vkbd: VisualKeyboard, e: KeyElement) { + this.vkbd = vkbd; let _this = this; this.promise = new Promise(function(resolve) { _this.resolver = resolve; @@ -17,7 +19,7 @@ namespace com.keyman.osk.embedded { public markActiveSubkeys() { if(this.resolver) { - this.resolver(new SubkeyDelegator(this.baseKey)); + this.resolver(new SubkeyDelegator(this.vkbd, this.baseKey)); } this.resolver = null; } diff --git a/web/source/osk/embedded/subkeyDelegator.ts b/web/source/osk/embedded/subkeyDelegator.ts index 3b6b844b3f..719d655ffe 100644 --- a/web/source/osk/embedded/subkeyDelegator.ts +++ b/web/source/osk/embedded/subkeyDelegator.ts @@ -1,11 +1,14 @@ namespace com.keyman.osk.embedded { export class SubkeyDelegator { private resolver: (keyEvent: text.KeyEvent) => void; + private readonly vkbd: VisualKeyboard; public readonly baseKey: KeyElement; public readonly promise: Promise; - constructor(e: KeyElement) { + constructor(vkbd: VisualKeyboard, e: KeyElement) { + this.vkbd = vkbd; + let _this = this; this.promise = new Promise(function(resolve) { _this.resolver = resolve; @@ -14,7 +17,7 @@ namespace com.keyman.osk.embedded { this.baseKey = e; } - public resolve(keyCoreID: string, vkbd: VisualKeyboard) { + public resolve(keyCoreID: string) { if(this.resolver) { // This is set with the base key of our current subkey elsewhere within the engine. var baseKey: OSKKeySpec = this.baseKey.key.spec; @@ -38,7 +41,7 @@ namespace com.keyman.osk.embedded { let keyEvent: text.KeyEvent = null; if(selectedKey) { - keyEvent = vkbd.keyEventFromSpec(selectedKey as keyboards.ActiveKey, null); + keyEvent = this.vkbd.keyEventFromSpec(selectedKey as keyboards.ActiveKey, null); keyEvent.vkCode=keyEvent.Lcode; }