fix(paste): optimize copy and paste mutations (#6472)

This commit is contained in:
wpxp123456
2026-01-15 17:00:31 +08:00
committed by GitHub
parent bf75a44faf
commit b463fef769
2 changed files with 22 additions and 18 deletions
@@ -672,24 +672,26 @@ export function getClearAndSetMergeMutations(
Rectangle.intersects({ startRow, startColumn, endRow, endColumn }, rect)
);
const removeMergeMutationParams: IRemoveWorksheetMergeMutationParams = {
unitId,
subUnitId,
ranges: mergedCellsInRange,
};
redoMutationsInfo.push({
id: RemoveWorksheetMergeMutation.id,
params: removeMergeMutationParams,
});
if (mergedCellsInRange.length > 0) {
const removeMergeMutationParams: IRemoveWorksheetMergeMutationParams = {
unitId,
subUnitId,
ranges: mergedCellsInRange,
};
redoMutationsInfo.push({
id: RemoveWorksheetMergeMutation.id,
params: removeMergeMutationParams,
});
const undoRemoveMergeMutationParams: IAddWorksheetMergeMutationParams = RemoveMergeUndoMutationFactory(
accessor,
removeMergeMutationParams
);
undoMutationsInfo.push({
id: AddWorksheetMergeMutation.id,
params: undoRemoveMergeMutationParams,
});
const undoRemoveMergeMutationParams: IAddWorksheetMergeMutationParams = RemoveMergeUndoMutationFactory(
accessor,
removeMergeMutationParams
);
undoMutationsInfo.push({
id: AddWorksheetMergeMutation.id,
params: undoRemoveMergeMutationParams,
});
}
}
if (mergeRangeData.length > 0) {
@@ -930,6 +930,8 @@ export class SheetClipboardService extends Disposable implements ISheetClipboard
}
const rowManager = worksheet.getRowManager();
const defaultRowHeight = worksheet.getConfig().defaultRowHeight;
const { rows, cols } = pastedRange;
const pasteRangeStartRow = rows[0];
const pasteRangeEndRow = rows[rows.length - 1];
@@ -948,7 +950,7 @@ export class SheetClipboardService extends Disposable implements ISheetClipboard
startColumn: pasteRangeStartColumn,
endColumn: pasteRangeEndColumn,
},
]);
]).filter((info) => info.autoHeight !== defaultRowHeight);
needAutoHeight.push(...autoHeight);
}
}