From 9d08f91079bf10cd269244e9b1ec160712427438 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Sun, 12 Jun 2022 14:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E6=AD=8C=E5=8D=95=E8=BE=93=E5=85=A5=E6=A1=86=E3=80=81=E6=AD=8C?= =?UTF-8?q?=E5=8D=95=E5=86=85=E6=AD=8C=E6=9B=B2=E6=90=9C=E7=B4=A2=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=A1=86=E4=BC=9A=E6=84=8F=E5=A4=96=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=9A=84=E5=85=A8=E5=B1=80=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E9=94=AE=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=88#879=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 1 + src/renderer/components/common/ListAddModal.vue | 2 +- .../components/common/ListAddMultipleModal.vue | 2 +- src/renderer/core/useApp/useEventListener.js | 9 +++++---- src/renderer/event/index.js | 10 ++++++---- src/renderer/utils/keyBind.js | 12 ++++++------ src/renderer/views/list/components/MyLists.vue | 4 ++-- src/renderer/views/list/components/SearchList.vue | 2 +- .../views/setting/components/SettingHotKey.vue | 4 ++-- 9 files changed, 25 insertions(+), 21 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 858e0635..68fab6e8 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -12,6 +12,7 @@ - 修复若配置了`http_proxy`环境变量时,会意外使用此代理配置的问题 - 修复多选后切换列表后不会清空多选内容的问题 - 修复设置快捷键时的处理逻辑问题 +- 修复在新建歌单输入框、歌单内歌曲搜索输入框会意外触发设置的全局快捷键的问题(#879) ### 文档 diff --git a/src/renderer/components/common/ListAddModal.vue b/src/renderer/components/common/ListAddModal.vue index a9537a71..37205168 100644 --- a/src/renderer/components/common/ListAddModal.vue +++ b/src/renderer/components/common/ListAddModal.vue @@ -8,7 +8,7 @@ - + diff --git a/src/renderer/components/common/ListAddMultipleModal.vue b/src/renderer/components/common/ListAddMultipleModal.vue index 9232ba7b..8f989142 100644 --- a/src/renderer/components/common/ListAddMultipleModal.vue +++ b/src/renderer/components/common/ListAddMultipleModal.vue @@ -8,7 +8,7 @@ - + diff --git a/src/renderer/core/useApp/useEventListener.js b/src/renderer/core/useApp/useEventListener.js index 859bb6e9..0dab7290 100644 --- a/src/renderer/core/useApp/useEventListener.js +++ b/src/renderer/core/useApp/useEventListener.js @@ -12,8 +12,9 @@ import { useRefGetter, } from '@renderer/utils/vueTools' -const handle_key_esc_down = ({ event }) => { - if (event.repeat) return +const handle_key_down = ({ event, type, key }) => { + // console.log(key) + if (key != 'escape' || !event || event.repeat || type == 'up' || window.isEditingHotKey) return if (event.target.tagName != 'INPUT' || event.target.classList.contains('ignore-esc')) { if (isFullscreen.value) { event.lx_handled = true @@ -113,7 +114,7 @@ export default ({ }) window.eventHub.emit(eventBaseName.bindKey) - window.eventHub.on('key_escape_down', handle_key_esc_down) + window.eventHub.on(eventBaseName.key_down, handle_key_down) window.eventHub.on('key_mod+f12_down', handle_open_devtools) window.eventHub.on('key_f11_down', handle_fullscreen) window.eventHub.on(eventBaseName.fullscreenToggle, handle_fullscreen) @@ -128,7 +129,7 @@ export default ({ } onBeforeUnmount(() => { - window.eventHub.off('key_escape_down', handle_key_esc_down) + window.eventHub.off(eventBaseName.key_down, handle_key_down) window.eventHub.off('key_mod+f12_down', handle_open_devtools) window.eventHub.off('key_f11_down', handle_fullscreen) window.eventHub.off(eventBaseName.fullscreenToggle, handle_fullscreen) diff --git a/src/renderer/event/index.js b/src/renderer/event/index.js index af43ef9d..934ac818 100644 --- a/src/renderer/event/index.js +++ b/src/renderer/event/index.js @@ -20,14 +20,15 @@ rendererInvoke(NAMES.mainWindow.get_hot_key).then(({ local, global }) => { }) eventHub.on(baseName.bindKey, () => { - keyBind.bindKey((key, eventKey, type, event, keys) => { + keyBind.bindKey((key, eventKey, type, event, keys, isEditing) => { // console.log(`key_${key}_${type}`) eventHub.emit(baseName.key_down, { event, keys, key, type }) // console.log(event, key) // console.log(key, eventKey, type, event, keys) - if (window.isEditingHotKey) return - if (appHotKeyConfig.local.enable && appHotKeyConfig.local.keys[key]) { - event?.preventDefault() + if (window.isEditingHotKey || (isEditing && type == 'down') || event?.lx_handled) return + if (event && appHotKeyConfig.local.enable && appHotKeyConfig.local.keys[key] && (key != 'escape' || !event.target.classList.contains('ignore-esc'))) { + // console.log(key, eventKey, type, keys, isEditing) + event.preventDefault() if (type == 'up') return // 软件内快捷键的最小化触发时 @@ -40,6 +41,7 @@ eventHub.on(baseName.bindKey, () => { eventHub.emit(appHotKeyConfig.local.keys[key].action) return } + // console.log(`key_${key}_${type}`) eventHub.emit(`key_${key}_${type}`, { event, keys, key, eventKey, type }) if (key != eventKey) eventHub.emit(`key_${eventKey}_${type}`, { event, keys, key, eventKey, type }) }) diff --git a/src/renderer/utils/keyBind.js b/src/renderer/utils/keyBind.js index 2489d150..c44ab158 100644 --- a/src/renderer/utils/keyBind.js +++ b/src/renderer/utils/keyBind.js @@ -2,7 +2,7 @@ import { isMac } from '../../common/utils' const downKeys = new Set() -const handleEvent = (type, event, keys) => { +const handleEvent = (type, event, keys, isEditing) => { let eventKey = event.key if (isMac) { let index = keys.indexOf('meta') @@ -23,7 +23,7 @@ const handleEvent = (type, event, keys) => { downKeys.delete(key) break } - handleSendEvent(key, eventKey, type, event, keys) + handleSendEvent(key, eventKey, type, event, keys, isEditing) } // 修饰键处理 @@ -54,7 +54,7 @@ const assertStopCallback = element => { } const handleKeyDown = event => { - if (assertStopCallback(event.target)) return + // if (assertStopCallback(event.target)) return // event.preventDefault() let keys = eventModifiers(event) switch (event.key) { @@ -70,11 +70,11 @@ const handleKeyDown = event => { keys.push((event.code.includes('Numpad') ? event.code.replace(/^Numpad(\w{1,3})\w*$/i, 'num$1') : event.key).toLowerCase()) break } - handleEvent('down', event, keys) + handleEvent('down', event, keys, assertStopCallback(event.target)) } const handleKeyUp = event => { - if (assertStopCallback(event.target)) return + // if (assertStopCallback(event.target)) return event.preventDefault() let keys = eventModifiers(event) switch (event.key) { @@ -88,7 +88,7 @@ const handleKeyUp = event => { keys.push((event.code.includes('Numpad') ? event.code.replace(/^Numpad(\w{1,3})\w*$/i, 'num$1') : event.key).toLowerCase()) break } - handleEvent('up', event, keys) + handleEvent('up', event, keys, assertStopCallback(event.target)) } let handleSendEvent diff --git a/src/renderer/views/list/components/MyLists.vue b/src/renderer/views/list/components/MyLists.vue index 161829b1..3990a09f 100644 --- a/src/renderer/views/list/components/MyLists.vue +++ b/src/renderer/views/list/components/MyLists.vue @@ -30,12 +30,12 @@ @contextmenu="handleListsItemRigthClick($event, index)" :aria-label="item.name" v-for="(item, index) in userLists" :key="item.id" :aria-selected="defaultList.id == listId" > {{item.name}} -
  • -
  • diff --git a/src/renderer/views/list/components/SearchList.vue b/src/renderer/views/list/components/SearchList.vue index b5477de0..dcae28f9 100644 --- a/src/renderer/views/list/components/SearchList.vue +++ b/src/renderer/views/list/components/SearchList.vue @@ -4,7 +4,7 @@ teleport(to="#view") transition(enter-active-class="animated-fast zoomIn" leave-active-class="animated zoomOut" @after-leave="handleAnimated") div(:class="$style.search" v-show="visible") div(:class="$style.form") - input.key-bind.ignore-esc(:placeholder="placeholder" v-model.trim="text" ref="dom_input" + input.ignore-esc(:placeholder="placeholder" v-model.trim="text" ref="dom_input" @input="handleDelaySearch" @keyup.enter="handleTemplistClick(selectIndex)" @keyup.arrow-down.prevent="handleKeyDown" diff --git a/src/renderer/views/setting/components/SettingHotKey.vue b/src/renderer/views/setting/components/SettingHotKey.vue index 57a54032..759971b5 100644 --- a/src/renderer/views/setting/components/SettingHotKey.vue +++ b/src/renderer/views/setting/components/SettingHotKey.vue @@ -7,7 +7,7 @@ dd div(:class="$style.hotKeyContainer" :style="{ opacity: current_hot_key.local.enable ? 1 : .6 }") div(:class="$style.hotKeyItem" v-for="item in allHotKeys.local") h4(:class="$style.hotKeyItemTitle") {{$t('setting__hot_key_' + item.name)}} - base-input.key-bind(:class="$style.hotKeyItemInput" readonly @keyup.prevent :placeholder="$t('setting__hot_key_unset_input')" + base-input(:class="$style.hotKeyItemInput" readonly @keyup.prevent :placeholder="$t('setting__hot_key_unset_input')" :value="hotKeyConfig.local[item.name] && formatHotKeyName(hotKeyConfig.local[item.name].key)" @focus="handleHotKeyFocus($event, item, 'local')" @blur="handleHotKeyBlur($event, item, 'local')") @@ -18,7 +18,7 @@ dd div(:class="$style.hotKeyContainer" :style="{ opacity: current_hot_key.global.enable ? 1 : .6 }") div(:class="$style.hotKeyItem" v-for="item in allHotKeys.global") h4(:class="$style.hotKeyItemTitle") {{$t('setting__hot_key_' + item.name)}} - base-input.key-bind(:class="[$style.hotKeyItemInput, hotKeyConfig.global[item.name] && hotKeyStatus[hotKeyConfig.global[item.name].key] && hotKeyStatus[hotKeyConfig.global[item.name].key].status === false ? $style.hotKeyFailed : null]" + base-input(:class="[$style.hotKeyItemInput, hotKeyConfig.global[item.name] && hotKeyStatus[hotKeyConfig.global[item.name].key] && hotKeyStatus[hotKeyConfig.global[item.name].key].status === false ? $style.hotKeyFailed : null]" :value="hotKeyConfig.global[item.name] && formatHotKeyName(hotKeyConfig.global[item.name].key)" @input.prevent readonly :placeholder="$t('setting__hot_key_unset_input')" @focus="handleHotKeyFocus($event, item, 'global')" @blur="handleHotKeyBlur($event, item, 'global')")