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
+23 -14
View File
@@ -699,33 +699,42 @@ export const DockBuilder = () => {
const CopySelection = () => { const CopySelection = () => {
const activeObject = editorMemo.getActiveObject(); const activeObject = editorMemo.getActiveObject();
if (activeObject) { if (activeObject) {
activeObject.clone(function (cloned) { activeObject.clone(
// Ensure dockData is copied function (cloned) {
if (activeObject.dockData) {
cloned.dockData = { ...activeObject.dockData };
}
clipboard = cloned; clipboard = cloned;
}); },
// Ensure dockData is copied
["dockData"]
);
} }
}; };
const PasteSelection = () => { const PasteSelection = () => {
if (clipboard) { if (clipboard) {
clipboard.clone(function (clonedObj) { clipboard.clone(
// Ensure dockData is copied function (clonedObj) {
if (clipboard.dockData) {
clonedObj.dockData = { ...clipboard.dockData };
}
// Offset the pasted object so it's visible // Offset the pasted object so it's visible
clonedObj.set({ clonedObj.set({
left: (clonedObj.left || 0) + 20, left: clonedObj.left + 20,
top: (clonedObj.top || 0) + 20, top: clonedObj.top + 20,
evented: true, 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.add(clonedObj);
}
editorMemo.setActiveObject(clonedObj); editorMemo.setActiveObject(clonedObj);
editorMemo.requestRenderAll(); editorMemo.requestRenderAll();
}); },
// Ensure dockData is copied
["dockData"]
);
} }
}; };