mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-08 01:45:32 +00:00
change(web): embedded longpress tracks source vkbd
This commit is contained in:
parent
d99203545b
commit
39ec2cbb2e
3 changed files with 13 additions and 8 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue