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')")