画布删除周撤回问题
This commit is contained in:
@@ -563,6 +563,12 @@ export class RemoveLayerCommand extends Command {
|
|||||||
allObjects.push(object);
|
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)) {
|
if (layer.children && Array.isArray(layer.children)) {
|
||||||
@@ -609,7 +615,7 @@ export class RemoveLayerCommand extends Command {
|
|||||||
// this.canvas.renderAll();
|
// this.canvas.renderAll();
|
||||||
// }
|
// }
|
||||||
await this.layerManager?.updateLayersObjectsInteractivity?.();
|
await this.layerManager?.updateLayersObjectsInteractivity?.();
|
||||||
// this.canvas.renderAll();
|
this.canvas.renderAll();
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
`✅ 已移除图层: ${this.removedLayer.name} (ID: ${this.layerId}),包含 ${this.originalObjects.length} 个对象`
|
`✅ 已移除图层: ${this.removedLayer.name} (ID: ${this.layerId}),包含 ${this.originalObjects.length} 个对象`
|
||||||
|
|||||||
@@ -693,25 +693,26 @@ function removeLayer(layerId) {
|
|||||||
return;
|
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);
|
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() {
|
function triggerImageUpload() {
|
||||||
|
|||||||
Reference in New Issue
Block a user