Fix: copy and past to add support for multiple selected objects
This commit is contained in:
@@ -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"]
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user