优化:只有当鼠标在画布内才响应快捷键

This commit is contained in:
wanglin2 2023-04-04 22:53:38 +08:00
parent c94f459ff9
commit 983e55bd1d
2 changed files with 31 additions and 1 deletions

View File

@ -35,6 +35,8 @@ class Event extends EventEmitter {
this.onContextmenu = this.onContextmenu.bind(this) this.onContextmenu = this.onContextmenu.bind(this)
this.onSvgMousedown = this.onSvgMousedown.bind(this) this.onSvgMousedown = this.onSvgMousedown.bind(this)
this.onKeyup = this.onKeyup.bind(this) this.onKeyup = this.onKeyup.bind(this)
this.onMouseenter = this.onMouseenter.bind(this)
this.onMouseleave = this.onMouseleave.bind(this)
} }
// 绑定事件 // 绑定事件
@ -46,6 +48,8 @@ class Event extends EventEmitter {
window.addEventListener('mouseup', this.onMouseup) window.addEventListener('mouseup', this.onMouseup)
this.mindMap.el.addEventListener('wheel', this.onMousewheel) this.mindMap.el.addEventListener('wheel', this.onMousewheel)
this.mindMap.svg.on('contextmenu', this.onContextmenu) this.mindMap.svg.on('contextmenu', this.onContextmenu)
this.mindMap.svg.on('mouseenter', this.onMouseenter)
this.mindMap.svg.on('mouseleave', this.onMouseleave)
window.addEventListener('keyup', this.onKeyup) window.addEventListener('keyup', this.onKeyup)
} }
@ -57,6 +61,8 @@ class Event extends EventEmitter {
window.removeEventListener('mouseup', this.onMouseup) window.removeEventListener('mouseup', this.onMouseup)
this.mindMap.el.removeEventListener('wheel', this.onMousewheel) this.mindMap.el.removeEventListener('wheel', this.onMousewheel)
this.mindMap.svg.off('contextmenu', this.onContextmenu) this.mindMap.svg.off('contextmenu', this.onContextmenu)
this.mindMap.svg.off('mouseenter', this.onMouseenter)
this.mindMap.svg.off('mouseleave', this.onMouseleave)
window.removeEventListener('keyup', this.onKeyup) window.removeEventListener('keyup', this.onKeyup)
} }
@ -130,6 +136,16 @@ class Event extends EventEmitter {
onKeyup(e) { onKeyup(e) {
this.emit('keyup', e) this.emit('keyup', e)
} }
// 进入
onMouseenter(e) {
this.emit('svg_mouseenter', e)
}
// 离开
onMouseleave(e) {
this.emit('svg_mouseleave', e)
}
} }
export default Event export default Event

View File

@ -10,6 +10,7 @@ export default class KeyCommand {
} }
this.shortcutMapCache = {} this.shortcutMapCache = {}
this.isPause = false this.isPause = false
this.isInSvg = false
this.bindEvent() this.bindEvent()
} }
@ -37,8 +38,21 @@ export default class KeyCommand {
// 绑定事件 // 绑定事件
bindEvent() { bindEvent() {
// 只有当鼠标在画布内才响应快捷键
this.mindMap.on('svg_mouseenter', () => {
this.isInSvg = true
})
this.mindMap.on('svg_mouseleave', () => {
if (this.mindMap.richText && this.mindMap.richText.showTextEdit) {
return
}
if (this.mindMap.renderer.textEdit.showTextEdit) {
return
}
this.isInSvg = false
})
window.addEventListener('keydown', e => { window.addEventListener('keydown', e => {
if (this.isPause) { if (this.isPause || !this.isInSvg) {
return return
} }
Object.keys(this.shortcutMap).forEach(key => { Object.keys(this.shortcutMap).forEach(key => {