From a3362e44fea4bdce4ded5f2621e8c4ce0837d904 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 29 Aug 2023 09:46:36 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E5=8F=B3=E9=94=AE=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E8=8A=82=E7=82=B9=E7=BB=93=E6=9D=9F=E6=97=B6=E7=A6=81?= =?UTF-8?q?=E6=AD=A2=E8=A7=A6=E5=8F=91=E8=8A=82=E7=82=B9=E5=8F=B3=E9=94=AE?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BA=8B=E4=BB=B6=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/node/Node.js | 8 ++++++-- simple-mind-map/src/plugins/Select.js | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/simple-mind-map/src/core/render/node/Node.js b/simple-mind-map/src/core/render/node/Node.js index 016d3c7f..a9896812 100644 --- a/simple-mind-map/src/core/render/node/Node.js +++ b/simple-mind-map/src/core/render/node/Node.js @@ -449,13 +449,17 @@ class Node { }) // 右键菜单事件 this.group.on('contextmenu', e => { + const { readonly, useLeftKeySelectionRightKeyDrag } = this.mindMap.opt // 按住ctrl键点击鼠标左键不知为何触发的是contextmenu事件 - if (this.mindMap.opt.readonly || e.ctrlKey) { - // || this.isGeneralization + if (readonly || e.ctrlKey) { return } e.stopPropagation() e.preventDefault() + // 如果是多选节点结束,那么不要触发右键菜单事件 + if(!useLeftKeySelectionRightKeyDrag && this.mindMap.select.hasSelectRange()) { + return + } if (this.nodeData.data.isActive) { this.renderer.clearActive() } diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index bba83b0c..e3fba7bc 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -11,6 +11,7 @@ class Select { this.mouseDownY = 0 this.mouseMoveX = 0 this.mouseMoveY = 0 + this.isSelecting = false this.bindEvent() } @@ -70,11 +71,15 @@ class Select { this.isMousedown = false if (this.rect) this.rect.remove() this.rect = null + setTimeout(() => { + this.isSelecting = false + }, 0) }) } // 鼠标移动事件 onMove(x, y) { + this.isSelecting = true // 绘制矩形 this.rect.plot([ [this.mouseDownX, this.mouseDownY], @@ -172,6 +177,11 @@ class Select { } }) } + + // 是否存在选区 + hasSelectRange() { + return this.isSelecting + } } Select.instanceName = 'select'