修复在新建歌单输入框、歌单内歌曲搜索输入框会意外触发设置的全局快捷键的问题(#879)
parent
0704a4ad12
commit
9d08f91079
|
@ -12,6 +12,7 @@
|
||||||
- 修复若配置了`http_proxy`环境变量时,会意外使用此代理配置的问题
|
- 修复若配置了`http_proxy`环境变量时,会意外使用此代理配置的问题
|
||||||
- 修复多选后切换列表后不会清空多选内容的问题
|
- 修复多选后切换列表后不会清空多选内容的问题
|
||||||
- 修复设置快捷键时的处理逻辑问题
|
- 修复设置快捷键时的处理逻辑问题
|
||||||
|
- 修复在新建歌单输入框、歌单内歌曲搜索输入框会意外触发设置的全局快捷键的问题(#879)
|
||||||
|
|
||||||
### 文档
|
### 文档
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 0 42 42" space="preserve">
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 0 42 42" space="preserve">
|
||||||
<use xlink:href="#icon-addTo"></use>
|
<use xlink:href="#icon-addTo"></use>
|
||||||
</svg>
|
</svg>
|
||||||
<input class="key-bind" :class="$style.newListInput" :value="newListName" type="text" :placeholder="$t('lists__new_list_input')" @keyup.enter="handleSaveList($event)" @blur="handleSaveList($event)"/>
|
<input :class="$style.newListInput" :value="newListName" type="text" :placeholder="$t('lists__new_list_input')" @keyup.enter="handleSaveList($event)" @blur="handleSaveList($event)"/>
|
||||||
</base-btn>
|
</base-btn>
|
||||||
<span :class="$style.btn" :key="i" v-for="i in spaceNum"></span>
|
<span :class="$style.btn" :key="i" v-for="i in spaceNum"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 0 42 42" space="preserve">
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 0 42 42" space="preserve">
|
||||||
<use xlink:href="#icon-addTo"></use>
|
<use xlink:href="#icon-addTo"></use>
|
||||||
</svg>
|
</svg>
|
||||||
<input class="key-bind" :class="$style.newListInput" :value="newListName" type="text" :placeholder="$t('lists__new_list_input')" @keyup.enter="handleSaveList($event)" @blur="handleSaveList($event)"/>
|
<input :class="$style.newListInput" :value="newListName" type="text" :placeholder="$t('lists__new_list_input')" @keyup.enter="handleSaveList($event)" @blur="handleSaveList($event)"/>
|
||||||
</base-btn>
|
</base-btn>
|
||||||
<span :class="$style.btn" :key="i" v-for="i in spaceNum"></span>
|
<span :class="$style.btn" :key="i" v-for="i in spaceNum"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,8 +12,9 @@ import {
|
||||||
useRefGetter,
|
useRefGetter,
|
||||||
} from '@renderer/utils/vueTools'
|
} from '@renderer/utils/vueTools'
|
||||||
|
|
||||||
const handle_key_esc_down = ({ event }) => {
|
const handle_key_down = ({ event, type, key }) => {
|
||||||
if (event.repeat) return
|
// 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 (event.target.tagName != 'INPUT' || event.target.classList.contains('ignore-esc')) {
|
||||||
if (isFullscreen.value) {
|
if (isFullscreen.value) {
|
||||||
event.lx_handled = true
|
event.lx_handled = true
|
||||||
|
@ -113,7 +114,7 @@ export default ({
|
||||||
})
|
})
|
||||||
|
|
||||||
window.eventHub.emit(eventBaseName.bindKey)
|
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_mod+f12_down', handle_open_devtools)
|
||||||
window.eventHub.on('key_f11_down', handle_fullscreen)
|
window.eventHub.on('key_f11_down', handle_fullscreen)
|
||||||
window.eventHub.on(eventBaseName.fullscreenToggle, handle_fullscreen)
|
window.eventHub.on(eventBaseName.fullscreenToggle, handle_fullscreen)
|
||||||
|
@ -128,7 +129,7 @@ export default ({
|
||||||
}
|
}
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
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_mod+f12_down', handle_open_devtools)
|
||||||
window.eventHub.off('key_f11_down', handle_fullscreen)
|
window.eventHub.off('key_f11_down', handle_fullscreen)
|
||||||
window.eventHub.off(eventBaseName.fullscreenToggle, handle_fullscreen)
|
window.eventHub.off(eventBaseName.fullscreenToggle, handle_fullscreen)
|
||||||
|
|
|
@ -20,14 +20,15 @@ rendererInvoke(NAMES.mainWindow.get_hot_key).then(({ local, global }) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
eventHub.on(baseName.bindKey, () => {
|
eventHub.on(baseName.bindKey, () => {
|
||||||
keyBind.bindKey((key, eventKey, type, event, keys) => {
|
keyBind.bindKey((key, eventKey, type, event, keys, isEditing) => {
|
||||||
// console.log(`key_${key}_${type}`)
|
// console.log(`key_${key}_${type}`)
|
||||||
eventHub.emit(baseName.key_down, { event, keys, key, type })
|
eventHub.emit(baseName.key_down, { event, keys, key, type })
|
||||||
// console.log(event, key)
|
// console.log(event, key)
|
||||||
// console.log(key, eventKey, type, event, keys)
|
// console.log(key, eventKey, type, event, keys)
|
||||||
if (window.isEditingHotKey) return
|
if (window.isEditingHotKey || (isEditing && type == 'down') || event?.lx_handled) return
|
||||||
if (appHotKeyConfig.local.enable && appHotKeyConfig.local.keys[key]) {
|
if (event && appHotKeyConfig.local.enable && appHotKeyConfig.local.keys[key] && (key != 'escape' || !event.target.classList.contains('ignore-esc'))) {
|
||||||
event?.preventDefault()
|
// console.log(key, eventKey, type, keys, isEditing)
|
||||||
|
event.preventDefault()
|
||||||
if (type == 'up') return
|
if (type == 'up') return
|
||||||
|
|
||||||
// 软件内快捷键的最小化触发时
|
// 软件内快捷键的最小化触发时
|
||||||
|
@ -40,6 +41,7 @@ eventHub.on(baseName.bindKey, () => {
|
||||||
eventHub.emit(appHotKeyConfig.local.keys[key].action)
|
eventHub.emit(appHotKeyConfig.local.keys[key].action)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// console.log(`key_${key}_${type}`)
|
||||||
eventHub.emit(`key_${key}_${type}`, { event, keys, key, eventKey, type })
|
eventHub.emit(`key_${key}_${type}`, { event, keys, key, eventKey, type })
|
||||||
if (key != eventKey) eventHub.emit(`key_${eventKey}_${type}`, { event, keys, key, eventKey, type })
|
if (key != eventKey) eventHub.emit(`key_${eventKey}_${type}`, { event, keys, key, eventKey, type })
|
||||||
})
|
})
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { isMac } from '../../common/utils'
|
||||||
|
|
||||||
const downKeys = new Set()
|
const downKeys = new Set()
|
||||||
|
|
||||||
const handleEvent = (type, event, keys) => {
|
const handleEvent = (type, event, keys, isEditing) => {
|
||||||
let eventKey = event.key
|
let eventKey = event.key
|
||||||
if (isMac) {
|
if (isMac) {
|
||||||
let index = keys.indexOf('meta')
|
let index = keys.indexOf('meta')
|
||||||
|
@ -23,7 +23,7 @@ const handleEvent = (type, event, keys) => {
|
||||||
downKeys.delete(key)
|
downKeys.delete(key)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
handleSendEvent(key, eventKey, type, event, keys)
|
handleSendEvent(key, eventKey, type, event, keys, isEditing)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修饰键处理
|
// 修饰键处理
|
||||||
|
@ -54,7 +54,7 @@ const assertStopCallback = element => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleKeyDown = event => {
|
const handleKeyDown = event => {
|
||||||
if (assertStopCallback(event.target)) return
|
// if (assertStopCallback(event.target)) return
|
||||||
// event.preventDefault()
|
// event.preventDefault()
|
||||||
let keys = eventModifiers(event)
|
let keys = eventModifiers(event)
|
||||||
switch (event.key) {
|
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())
|
keys.push((event.code.includes('Numpad') ? event.code.replace(/^Numpad(\w{1,3})\w*$/i, 'num$1') : event.key).toLowerCase())
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
handleEvent('down', event, keys)
|
handleEvent('down', event, keys, assertStopCallback(event.target))
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleKeyUp = event => {
|
const handleKeyUp = event => {
|
||||||
if (assertStopCallback(event.target)) return
|
// if (assertStopCallback(event.target)) return
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
let keys = eventModifiers(event)
|
let keys = eventModifiers(event)
|
||||||
switch (event.key) {
|
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())
|
keys.push((event.code.includes('Numpad') ? event.code.replace(/^Numpad(\w{1,3})\w*$/i, 'num$1') : event.key).toLowerCase())
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
handleEvent('up', event, keys)
|
handleEvent('up', event, keys, assertStopCallback(event.target))
|
||||||
}
|
}
|
||||||
|
|
||||||
let handleSendEvent
|
let handleSendEvent
|
||||||
|
|
|
@ -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"
|
@contextmenu="handleListsItemRigthClick($event, index)" :aria-label="item.name" v-for="(item, index) in userLists" :key="item.id" :aria-selected="defaultList.id == listId"
|
||||||
>
|
>
|
||||||
<span :class="$style.listsLabel" @click="handleListToggle(item.id, index + 2)">{{item.name}}</span>
|
<span :class="$style.listsLabel" @click="handleListToggle(item.id, index + 2)">{{item.name}}</span>
|
||||||
<input class="key-bind" :class="$style.listsInput" @contextmenu.stop type="text"
|
<input :class="$style.listsInput" @contextmenu.stop type="text"
|
||||||
@keyup.enter="handleListsSave(index, $event)" @blur="handleListsSave(index, $event)" :value="item.name" :placeholder="item.name"/>
|
@keyup.enter="handleListsSave(index, $event)" @blur="handleListsSave(index, $event)" :value="item.name" :placeholder="item.name"/>
|
||||||
</li>
|
</li>
|
||||||
<transition enter-active-class="animated-fast slideInLeft" leave-active-class="animated-fast fadeOut" @after-leave="handleListsNewAfterLeave" @after-enter="$refs.dom_listsNewInput.focus()">
|
<transition enter-active-class="animated-fast slideInLeft" leave-active-class="animated-fast fadeOut" @after-leave="handleListsNewAfterLeave" @after-enter="$refs.dom_listsNewInput.focus()">
|
||||||
<li :class="[$style.listsItem, $style.listsNew, listsData.isNewLeave ? $style.newLeave : null]" v-if="listsData.isShowNewList">
|
<li :class="[$style.listsItem, $style.listsNew, listsData.isNewLeave ? $style.newLeave : null]" v-if="listsData.isShowNewList">
|
||||||
<input class="key-bind" :class="$style.listsInput" @contextmenu.stop ref="dom_listsNewInput" type="text" @keyup.enter="handleListsCreate"
|
<input :class="$style.listsInput" @contextmenu.stop ref="dom_listsNewInput" type="text" @keyup.enter="handleListsCreate"
|
||||||
@blur="handleListsCreate" :placeholder="$t('lists__new_list_input')"/>
|
@blur="handleListsCreate" :placeholder="$t('lists__new_list_input')"/>
|
||||||
</li>
|
</li>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
|
@ -4,7 +4,7 @@ teleport(to="#view")
|
||||||
transition(enter-active-class="animated-fast zoomIn" leave-active-class="animated zoomOut" @after-leave="handleAnimated")
|
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.search" v-show="visible")
|
||||||
div(:class="$style.form")
|
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"
|
@input="handleDelaySearch"
|
||||||
@keyup.enter="handleTemplistClick(selectIndex)"
|
@keyup.enter="handleTemplistClick(selectIndex)"
|
||||||
@keyup.arrow-down.prevent="handleKeyDown"
|
@keyup.arrow-down.prevent="handleKeyDown"
|
||||||
|
|
|
@ -7,7 +7,7 @@ dd
|
||||||
div(:class="$style.hotKeyContainer" :style="{ opacity: current_hot_key.local.enable ? 1 : .6 }")
|
div(:class="$style.hotKeyContainer" :style="{ opacity: current_hot_key.local.enable ? 1 : .6 }")
|
||||||
div(:class="$style.hotKeyItem" v-for="item in allHotKeys.local")
|
div(:class="$style.hotKeyItem" v-for="item in allHotKeys.local")
|
||||||
h4(:class="$style.hotKeyItemTitle") {{$t('setting__hot_key_' + item.name)}}
|
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)"
|
:value="hotKeyConfig.local[item.name] && formatHotKeyName(hotKeyConfig.local[item.name].key)"
|
||||||
@focus="handleHotKeyFocus($event, item, 'local')"
|
@focus="handleHotKeyFocus($event, item, 'local')"
|
||||||
@blur="handleHotKeyBlur($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.hotKeyContainer" :style="{ opacity: current_hot_key.global.enable ? 1 : .6 }")
|
||||||
div(:class="$style.hotKeyItem" v-for="item in allHotKeys.global")
|
div(:class="$style.hotKeyItem" v-for="item in allHotKeys.global")
|
||||||
h4(:class="$style.hotKeyItemTitle") {{$t('setting__hot_key_' + item.name)}}
|
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')"
|
: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')"
|
@focus="handleHotKeyFocus($event, item, 'global')"
|
||||||
@blur="handleHotKeyBlur($event, item, 'global')")
|
@blur="handleHotKeyBlur($event, item, 'global')")
|
||||||
|
|
Loading…
Reference in New Issue