From 0ae48cc64ec13b2d0c204efbb37209cd1a48b7ea Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Fri, 27 Oct 2023 14:58:44 +0700 Subject: [PATCH] fix(web): niche-case handling - subkey from released modipress --- .../osk/src/input/gestures/browser/subkeyPopup.ts | 6 ++++++ web/src/engine/osk/src/visualKeyboard.ts | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/web/src/engine/osk/src/input/gestures/browser/subkeyPopup.ts b/web/src/engine/osk/src/input/gestures/browser/subkeyPopup.ts index 3eb3a64644..8ad70cde60 100644 --- a/web/src/engine/osk/src/input/gestures/browser/subkeyPopup.ts +++ b/web/src/engine/osk/src/input/gestures/browser/subkeyPopup.ts @@ -35,6 +35,8 @@ export default class SubkeyPopup implements GestureHandler { private source: GestureSequence; private readonly gestureParams: GestureParams; + readonly shouldLockLayer: boolean = false; + constructor( source: GestureSequence, configChanger: ConfigChangeClosure, @@ -46,6 +48,10 @@ export default class SubkeyPopup implements GestureHandler { this.source = source; this.gestureParams = gestureParams; + if(vkbd.layerLocked) { + this.shouldLockLayer = true; + } + source.on('complete', () => { this.currentSelection?.key.highlight(false); this.clear(); diff --git a/web/src/engine/osk/src/visualKeyboard.ts b/web/src/engine/osk/src/visualKeyboard.ts index 9827374185..def7f75f6c 100644 --- a/web/src/engine/osk/src/visualKeyboard.ts +++ b/web/src/engine/osk/src/visualKeyboard.ts @@ -523,7 +523,16 @@ export default class VisualKeyboard extends EventEmitter implements Ke } // Once the best coord to use for fat-finger calculations has been determined: - keyResult = this.modelKeyClick(gestureStage.item, coord); + const shouldLockLayer = handlers && (handlers[0] instanceof SubkeyPopup) && handlers[0].shouldLockLayer; + try { + if(shouldLockLayer) { + this.lockLayer(true); + } + keyResult = this.modelKeyClick(gestureStage.item, coord); + } finally { + this.lockLayer(false); + } + } // Outside of passing keys along... the handling of later stages is delegated