Fix: 删除图层/图元约束 #9

Closed
opened 2023-03-18 18:48:06 +08:00 by ArgonarioD · 3 comments
  • 图层删除约束
  • 图元删除约束
  • 在删除失败时弹出对话框提示用户是哪个元素被哪个元素引用了导致本次删除无法进行
- [ ] 图层删除约束 - [ ] 图元删除约束 - [ ] 在删除失败时弹出对话框提示用户是哪个元素被哪个元素引用了导致本次删除无法进行
ArgonarioD self-assigned this 2023-03-18 18:48:36 +08:00
Karlis was assigned by ArgonarioD 2023-03-18 18:48:36 +08:00
ArgonarioD added the
bug
label 2023-03-18 19:25:36 +08:00
Poster
Owner

图层删除

当删除一个节点时,该节点一定满足且只满足以下条件中的一条:

  1. 是一个Leaf节点,引用了其他的Element;
  2. 是一个Folder节点,没有GroupElement引用,没有引用任何其他节点(因为是Folder);
  3. 是一个Folder节点,存在对应的GroupElement引用。

其中,对于第1条,由于Leaf节点被删除只影响其父亲Folder的属性,所以显然在删除Leaf节点时是绝对安全的。

对于第2条,对于其父亲Folder,其被删除只影响其父亲Folder的属性,所以不会影响其父亲;对于其孩子,有可能存在以下情况:

  1. 孩子中不存在任何被引用的情况:删除安全;
  2. 孩子中存在Folder节点被GroupElement引用,不安全,需要手动将情况转换为第1条后才可以删除。

对于第3条,必须首先手动解除其本身的引用,然后将转变为第2条。

图元删除

显然,无论是什么种类的图元,删除一个图元会影响到的元素只有引用它的图层,所以我们将SimpleElement与GroupElement合并成一种情况讨论。

当删除一个图元时,该图元一定满足且只满足以下条件中的一条:

  1. 是一个GraphicElement,未被其他图层引用;
  2. 是一个GraphicElement,被其他图层引用。

对于第1条,删除绝对安全。

对于第2条,将引用关系手动解除后,删除安全。

# 图层删除 当删除一个节点时,该节点一定满足且只满足以下条件中的一条: 1. 是一个Leaf节点,引用了其他的Element; 2. 是一个Folder节点,没有GroupElement引用,没有引用任何其他节点(因为是Folder); 3. 是一个Folder节点,存在对应的GroupElement引用。 其中,对于第1条,由于Leaf节点被删除只影响其父亲Folder的属性,所以显然在删除Leaf节点时是绝对安全的。 对于第2条,对于其父亲Folder,其被删除只影响其父亲Folder的属性,所以不会影响其父亲;对于其孩子,有可能存在以下情况: 1. 孩子中不存在任何被引用的情况:删除安全; 2. 孩子中存在Folder节点被GroupElement引用,不安全,需要手动将情况转换为第1条后才可以删除。 对于第3条,必须首先手动解除其本身的引用,然后将转变为第2条。 # 图元删除 **显然**,无论是什么种类的图元,删除一个图元会影响到的元素只有引用它的图层,所以我们将SimpleElement与GroupElement合并成一种情况讨论。 当删除一个图元时,该图元一定满足且只满足以下条件中的一条: 1. 是一个GraphicElement,未被其他图层引用; 2. 是一个GraphicElement,被其他图层引用。 对于第1条,删除绝对安全。 对于第2条,将引用关系手动解除后,删除安全。

待测试

待测试
Karlis added
待测试
and removed
bug
labels 2023-03-19 15:50:27 +08:00

关联关系解除后,图元删除的问题

引用图元的GraphicElement的所有关联LayerWrapper被删除后,GraphicElement无法被删除

步骤

  1. 创建一个组合图元GraphicElement

  2. 在创建一个Folder节点,在该节点下创建Leaf节点引用图元GraphicElement

  3. 删除 2 中创建的Folder节点

  4. 尝试删除组合图元GraphicElement,无法删除

结果图

image

右侧点击测试节点ABC无法选择删除

# 关联关系解除后,图元删除的问题 引用图元的GraphicElement的所有关联LayerWrapper被删除后,GraphicElement无法被删除 ## 步骤 1. 创建一个组合图元GraphicElement 2. 在创建一个Folder节点,在该节点下创建Leaf节点引用图元GraphicElement 3. 删除 2 中创建的Folder节点 4. 尝试删除组合图元GraphicElement,无法删除 ## 结果图 ![image](/attachments/283a2817-2765-4eae-8fa6-1693252a1a5c) 右侧点击测试节点ABC无法选择删除
Sign in to join this conversation.
No Milestone
No project
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: BigC/ArchitectureColoredPainting#9
There is no content yet.