From d37719a38cf2f0c9e19cc4197b243de0c531f189 Mon Sep 17 00:00:00 2001 From: AkiChase <1003019131@qq.com> Date: Thu, 2 May 2024 16:58:38 +0800 Subject: [PATCH] fix(KeyBoard): new hotkey not work when saved by nav --- src/components/keyboard/KeyBoard.vue | 49 +++++++++++++++------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/components/keyboard/KeyBoard.vue b/src/components/keyboard/KeyBoard.vue index 33c16e4..bf41006 100644 --- a/src/components/keyboard/KeyBoard.vue +++ b/src/components/keyboard/KeyBoard.vue @@ -122,8 +122,8 @@ function isKeyUnique(curKey: string): boolean { function setCurButtonKey(curKey: string) { if ( keyboardStore.activeButtonIndex === -1 || - keyboardStore.activeButtonIndex >= store.editKeyMappingList.length|| - keyboardStore.showButtonSettingFlag|| + keyboardStore.activeButtonIndex >= store.editKeyMappingList.length || + keyboardStore.showButtonSettingFlag || keyboardStore.showButtonAddFlag ) return; @@ -233,26 +233,31 @@ onActivated(() => { }); onBeforeRouteLeave(() => { - document.removeEventListener("keyup", handleKeyUp); - document.removeEventListener("wheel", handleMouseWheel); - if (keyboardStore.edited) { - dialog.warning({ - title: "Warning", - content: "当前方案尚未保存,是否保存?", - positiveText: "保存", - negativeText: "取消", - onPositiveClick: () => { - if (store.applyEditKeyMappingList()) { - keyboardStore.edited = false; - } else { - message.error("存在重复按键,无法保存"); - } - }, - onNegativeClick: () => { - resetKeyMappingConfig(); - }, - }); - } + return new Promise((resolve, _) => { + document.removeEventListener("keyup", handleKeyUp); + document.removeEventListener("wheel", handleMouseWheel); + if (keyboardStore.edited) { + dialog.warning({ + title: "Warning", + content: "当前方案尚未保存,是否保存?", + positiveText: "保存", + negativeText: "取消", + onPositiveClick: () => { + if (store.applyEditKeyMappingList()) { + keyboardStore.edited = false; + resolve(true); + } else { + message.error("存在重复按键,无法保存"); + resolve(false); + } + }, + onNegativeClick: () => { + resetKeyMappingConfig(); + resolve(true); + }, + }); + } + }); });