画布删除周撤回问题

This commit is contained in:
李志鹏
2025-10-17 14:16:08 +08:00
parent a297bb9791
commit 28ee3f073b
2 changed files with 26 additions and 19 deletions

View File

@@ -563,6 +563,12 @@ export class RemoveLayerCommand extends Command {
allObjects.push(object);
}
}
layer.fabricObjects?.forEach((fabric) => {
const { object } = findObjectById(this.canvas, fabric.id);
if (object && !allObjects.includes(object)) {
allObjects.push(object);
}
});
// 递归收集子图层的对象
if (layer.children && Array.isArray(layer.children)) {
@@ -609,7 +615,7 @@ export class RemoveLayerCommand extends Command {
// this.canvas.renderAll();
// }
await this.layerManager?.updateLayersObjectsInteractivity?.();
// this.canvas.renderAll();
this.canvas.renderAll();
console.log(
`✅ 已移除图层: ${this.removedLayer.name} (ID: ${this.layerId}),包含 ${this.originalObjects.length} 个对象`

View File

@@ -693,25 +693,26 @@ function removeLayer(layerId) {
return;
}
if (canvasManager && canvasManager.canvas) {
const layerToRemove = layers.value.find((l) => l.id === layerId);
if (layerToRemove) {
const elementIds = layerToRemove?.fabricObjects?.map((e) => e.id);
elementIds.forEach((elementId) => {
const objectToRemove = canvasManager.canvas
.getObjects()
.find((obj) => obj.id === elementId);
if (objectToRemove) {
canvasManager.canvas.remove(objectToRemove);
}
});
if (activeLayerId.value === layerId) {
activeElementId.value = null;
}
canvasManager.canvas.renderAll();
}
}
layerManager.removeLayer(layerId);
// 此处删除画布上内容导致撤回操作无效(多余)
// if (canvasManager && canvasManager.canvas) {
// const layerToRemove = layers.value.find((l) => l.id === layerId);
// if (layerToRemove) {
// const elementIds = layerToRemove?.fabricObjects?.map((e) => e.id);
// elementIds.forEach((elementId) => {
// const objectToRemove = canvasManager.canvas
// .getObjects()
// .find((obj) => obj.id === elementId);
// if (objectToRemove) {
// canvasManager.canvas.remove(objectToRemove);
// }
// });
// if (activeLayerId.value === layerId) {
// activeElementId.value = null;
// }
// canvasManager.canvas.renderAll();
// }
// }
}
function triggerImageUpload() {