change(web): embedded longpress tracks source vkbd

This commit is contained in:
jahorton 2021-06-24 10:15:49 +07:00
parent d99203545b
commit 39ec2cbb2e
3 changed files with 13 additions and 8 deletions

View file

@ -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);

View file

@ -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<SubkeyDelegator>;
constructor(e: KeyElement) {
constructor(vkbd: VisualKeyboard, e: KeyElement) {
this.vkbd = vkbd;
let _this = this;
this.promise = new Promise<SubkeyDelegator>(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;
}

View file

@ -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<text.KeyEvent>;
constructor(e: KeyElement) {
constructor(vkbd: VisualKeyboard, e: KeyElement) {
this.vkbd = vkbd;
let _this = this;
this.promise = new Promise<text.KeyEvent>(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;
}