Fix:修复删除非当前激活的节点时,当前激活节点的激活状态无法取消的问题

This commit is contained in:
街角小林 2024-04-15 18:50:05 +08:00
parent 6b9eee7fc6
commit e9352a4f6c
2 changed files with 12 additions and 7 deletions

View File

@ -1242,7 +1242,7 @@ class Render {
root.nodeData.children = [] root.nodeData.children = []
} else { } else {
// 如果只选中了一个节点,删除后激活其兄弟节点或者父节点 // 如果只选中了一个节点,删除后激活其兄弟节点或者父节点
needActiveNode = this.getNextActiveNode() needActiveNode = this.getNextActiveNode(list)
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
const node = list[i] const node = list[i]
const currentEditNode = this.textEdit.getCurrentEditNode() const currentEditNode = this.textEdit.getCurrentEditNode()
@ -1297,13 +1297,13 @@ class Render {
if (this.activeNodeList.length <= 0 && appointNodes.length <= 0) { if (this.activeNodeList.length <= 0 && appointNodes.length <= 0) {
return return
} }
// 删除节点后需要激活的节点,如果只选中了一个节点,删除后激活其兄弟节点或者父节点
let needActiveNode = this.getNextActiveNode()
let isAppointNodes = appointNodes.length > 0 let isAppointNodes = appointNodes.length > 0
let list = isAppointNodes ? appointNodes : this.activeNodeList let list = isAppointNodes ? appointNodes : this.activeNodeList
list = list.filter(node => { list = list.filter(node => {
return !node.isRoot return !node.isRoot
}) })
// 删除节点后需要激活的节点,如果只选中了一个节点,删除后激活其兄弟节点或者父节点
let needActiveNode = this.getNextActiveNode(list)
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
let node = list[i] let node = list[i]
if (node.isGeneralization) { if (node.isGeneralization) {
@ -1329,7 +1329,11 @@ class Render {
} }
// 计算下一个可激活的节点 // 计算下一个可激活的节点
getNextActiveNode() { getNextActiveNode(deleteList) {
// 删除多个节点不自动激活相邻节点
if (deleteList.length !== 1) return null
// 被删除的节点不在当前激活的节点列表里,不激活相邻节点
if (this.findActiveNodeIndex(deleteList[0]) === -1) return null
let needActiveNode = null let needActiveNode = null
if ( if (
this.activeNodeList.length === 1 && this.activeNodeList.length === 1 &&

View File

@ -144,9 +144,10 @@ class Base {
this.cacheNode(newUid, newNode) this.cacheNode(newUid, newNode)
// 数据关联实际节点 // 数据关联实际节点
data._node = newNode data._node = newNode
if (data.data.isActive) { }
this.renderer.addNodeToActiveList(newNode) // 如果该节点数据是已激活状态,那么添加到激活节点列表里
} if (data.data.isActive) {
this.renderer.addNodeToActiveList(newNode)
} }
// 如果当前节点在激活节点列表里,那么添加上激活的状态 // 如果当前节点在激活节点列表里,那么添加上激活的状态
if (this.mindMap.renderer.findActiveNodeIndex(newNode) !== -1) { if (this.mindMap.renderer.findActiveNodeIndex(newNode) !== -1) {