Fix: copy and past to add support for multiple selected objects

This commit is contained in:
Ayobami
2025-07-06 21:16:59 +01:00
parent 12546d02c4
commit d55b1cb9b7
+29 -20
View File
@@ -699,33 +699,42 @@ export const DockBuilder = () => {
const CopySelection = () => {
const activeObject = editorMemo.getActiveObject();
if (activeObject) {
activeObject.clone(function (cloned) {
activeObject.clone(
function (cloned) {
clipboard = cloned;
},
// Ensure dockData is copied
if (activeObject.dockData) {
cloned.dockData = { ...activeObject.dockData };
}
clipboard = cloned;
});
["dockData"]
);
}
};
const PasteSelection = () => {
if (clipboard) {
clipboard.clone(function (clonedObj) {
clipboard.clone(
function (clonedObj) {
// Offset the pasted object so it's visible
clonedObj.set({
left: clonedObj.left + 20,
top: clonedObj.top + 20,
evented: true,
});
// Add support for multiple selected objects
if (clonedObj.type === "activeSelection") {
clonedObj.canvas = editorMemo;
clonedObj.forEachObject(function (obj) {
editorMemo.add(obj);
});
clonedObj.setCoords();
} else {
editorMemo.add(clonedObj);
}
editorMemo.setActiveObject(clonedObj);
editorMemo.requestRenderAll();
},
// Ensure dockData is copied
if (clipboard.dockData) {
clonedObj.dockData = { ...clipboard.dockData };
}
// Offset the pasted object so it's visible
clonedObj.set({
left: (clonedObj.left || 0) + 20,
top: (clonedObj.top || 0) + 20,
evented: true,
});
editorMemo.add(clonedObj);
editorMemo.setActiveObject(clonedObj);
editorMemo.requestRenderAll();
});
["dockData"]
);
}
};