mirror of
https://github.com/dream-num/univer.git
synced 2026-08-28 23:01:30 +08:00
fix: fix the cut menu item in the context menu (#6280)
This commit is contained in:
@@ -49,6 +49,7 @@ import {
|
||||
AddMergeUndoMutationFactory,
|
||||
AddWorksheetMergeMutation,
|
||||
getAddMergeMutationRangeByType,
|
||||
getPrimaryForRange,
|
||||
MoveRangeCommand,
|
||||
MoveRangeMutation,
|
||||
RemoveMergeUndoMutationFactory,
|
||||
@@ -222,72 +223,76 @@ export function getMoveRangeMutations(
|
||||
const toMergeData = toWorksheet.getMergeData();
|
||||
const fromMergeRanges = fromMergeData.filter((item) => Rectangle.intersects(item, fromRange));
|
||||
const toMergeRanges = toMergeData.filter((item) => Rectangle.intersects(item, toRange));
|
||||
|
||||
const willMoveToMergeRanges = fromMergeRanges
|
||||
.map((mergeRange) => Rectangle.getRelativeRange(mergeRange, fromRange))
|
||||
.map((relativeRange) => Rectangle.getPositionRange(relativeRange, toRange));
|
||||
|
||||
const addMergeCellRanges = getAddMergeMutationRangeByType(willMoveToMergeRanges);
|
||||
|
||||
const mergeRedos: Array<{
|
||||
id: string;
|
||||
params: IAddWorksheetMergeMutationParams | IRemoveWorksheetMergeMutationParams;
|
||||
}> = [
|
||||
{
|
||||
id: RemoveWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: fromMergeRanges,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: RemoveWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: toMergeRanges,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
ranges: addMergeCellRanges,
|
||||
},
|
||||
},
|
||||
];
|
||||
}> = [];
|
||||
const mergeUndos: Array<{
|
||||
id: string;
|
||||
params: IAddWorksheetMergeMutationParams | IRemoveWorksheetMergeMutationParams;
|
||||
}> = [
|
||||
{
|
||||
}> = [];
|
||||
|
||||
if (fromMergeRanges.length > 0 || toMergeRanges.length > 0) {
|
||||
const willMoveToMergeRanges = fromMergeRanges
|
||||
.map((mergeRange) => Rectangle.getRelativeRange(mergeRange, fromRange))
|
||||
.map((relativeRange) => Rectangle.getPositionRange(relativeRange, toRange));
|
||||
const addMergeCellRanges = getAddMergeMutationRangeByType(willMoveToMergeRanges);
|
||||
|
||||
if (fromMergeRanges.length > 0) {
|
||||
mergeRedos.push({
|
||||
id: RemoveWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: fromMergeRanges,
|
||||
},
|
||||
});
|
||||
mergeUndos.push({
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: fromMergeRanges,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (toMergeRanges.length > 0) {
|
||||
mergeRedos.push({
|
||||
id: RemoveWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: toMergeRanges,
|
||||
},
|
||||
});
|
||||
mergeUndos.push({
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
ranges: toMergeRanges,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
mergeRedos.push({
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
ranges: addMergeCellRanges,
|
||||
},
|
||||
});
|
||||
mergeUndos.unshift({
|
||||
id: RemoveWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
ranges: addMergeCellRanges,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
ranges: toMergeRanges,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: AddWorksheetMergeMutation.id,
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
ranges: fromMergeRanges,
|
||||
},
|
||||
},
|
||||
];
|
||||
// +++++++++++++++++++++
|
||||
});
|
||||
}
|
||||
|
||||
redos = [
|
||||
{ id: MoveRangeMutation.id, params: doMoveRangeMutation },
|
||||
@@ -298,7 +303,7 @@ export function getMoveRangeMutations(
|
||||
params: {
|
||||
unitId,
|
||||
subUnitId: toSubUnitId,
|
||||
selections: [{ range: toRange }],
|
||||
selections: [{ range: toRange, primary: getPrimaryForRange(toRange, toWorksheet) }],
|
||||
type: SelectionMoveType.MOVE_END,
|
||||
} as ISetSelectionsOperationParams,
|
||||
},
|
||||
@@ -313,7 +318,7 @@ export function getMoveRangeMutations(
|
||||
unitId,
|
||||
subUnitId: fromSubUnitId,
|
||||
type: SelectionMoveType.MOVE_END,
|
||||
selections: [{ range: fromRange }],
|
||||
selections: [{ range: fromRange, primary: getPrimaryForRange(fromRange, fromWorksheet) }],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -52,7 +52,7 @@ import {
|
||||
import { ContextMenuGroup, ContextMenuPosition, RibbonPosition, RibbonStartGroup } from '@univerjs/ui';
|
||||
import {
|
||||
SheetCopyCommand,
|
||||
// SheetCutCommand,
|
||||
SheetCutCommand,
|
||||
SheetPasteBesidesBorderCommand,
|
||||
SheetPasteColWidthCommand,
|
||||
SheetPasteCommand,
|
||||
@@ -118,7 +118,7 @@ import {
|
||||
CancelFrozenMenuItemFactory,
|
||||
ColAutoWidthMenuItemFactory,
|
||||
CopyMenuItemFactory,
|
||||
// CutMenuItemFactory,
|
||||
CutMenuItemFactory,
|
||||
FitContentMenuItemFactory,
|
||||
FontFamilySelectorMenuItemFactory,
|
||||
FormatPainterMenuItemFactory,
|
||||
@@ -294,10 +294,10 @@ export const menuSchema: MenuSchemaType = {
|
||||
order: 0,
|
||||
menuItemFactory: CopyMenuItemFactory,
|
||||
},
|
||||
// [SheetCutCommand.name]: {
|
||||
// order: 1,
|
||||
// menuItemFactory: CutMenuItemFactory,
|
||||
// },
|
||||
[SheetCutCommand.name]: {
|
||||
order: 1,
|
||||
menuItemFactory: CutMenuItemFactory,
|
||||
},
|
||||
[SheetPasteCommand.name]: {
|
||||
order: 2,
|
||||
menuItemFactory: PasteMenuItemFactory,
|
||||
@@ -435,10 +435,10 @@ export const menuSchema: MenuSchemaType = {
|
||||
order: 0,
|
||||
menuItemFactory: CopyMenuItemFactory,
|
||||
},
|
||||
// [SheetCutCommand.name]: {
|
||||
// order: 1,
|
||||
// menuItemFactory: CutMenuItemFactory,
|
||||
// },
|
||||
[SheetCutCommand.name]: {
|
||||
order: 1,
|
||||
menuItemFactory: CutMenuItemFactory,
|
||||
},
|
||||
[SheetPasteCommand.name]: {
|
||||
order: 2,
|
||||
menuItemFactory: PasteMenuItemFactory,
|
||||
@@ -556,10 +556,10 @@ export const menuSchema: MenuSchemaType = {
|
||||
order: 0,
|
||||
menuItemFactory: CopyMenuItemFactory,
|
||||
},
|
||||
// [SheetCutCommand.name]: {
|
||||
// order: 1,
|
||||
// menuItemFactory: CutMenuItemFactory,
|
||||
// },
|
||||
[SheetCutCommand.name]: {
|
||||
order: 1,
|
||||
menuItemFactory: CutMenuItemFactory,
|
||||
},
|
||||
[SheetPasteCommand.name]: {
|
||||
order: 2,
|
||||
menuItemFactory: PasteMenuItemFactory,
|
||||
|
||||
@@ -911,11 +911,12 @@ export function CutMenuItemFactory(accessor: IAccessor): IMenuButtonItem {
|
||||
id: SheetCutCommand.name,
|
||||
commandId: CutCommand.id,
|
||||
type: MenuItemType.BUTTON,
|
||||
title: 'contextMenu.cut',
|
||||
title: 'rightClick.cut',
|
||||
icon: 'CutIcon',
|
||||
disabled$: getCurrentRangeDisable$(accessor, {
|
||||
workbookTypes: [WorkbookEditablePermission],
|
||||
rangeTypes: [RangeProtectionPermissionEditPoint],
|
||||
workbookTypes: [WorkbookCopyPermission, WorkbookEditablePermission],
|
||||
worksheetTypes: [WorksheetCopyPermission, WorksheetEditPermission],
|
||||
rangeTypes: [RangeProtectionPermissionViewPoint, RangeProtectionPermissionEditPoint],
|
||||
}),
|
||||
hidden$: getMenuHiddenObservable(accessor, UniverInstanceType.UNIVER_SHEET),
|
||||
};
|
||||
|
||||
@@ -810,9 +810,11 @@ export class SheetClipboardService extends Disposable implements ISheetClipboard
|
||||
});
|
||||
|
||||
// setting the selection should be done separately, regardless of the pasting type.
|
||||
const setSelectionOperation = this._getSetSelectionOperation(unitId, subUnitId, pastedRange, cellMatrix, pasteType);
|
||||
if (setSelectionOperation) {
|
||||
redoMutationsInfo.push(setSelectionOperation);
|
||||
if (payload.copyType === COPY_TYPE.COPY) {
|
||||
const setSelectionOperation = this._getSetSelectionOperation(unitId, subUnitId, pastedRange, cellMatrix, pasteType);
|
||||
if (setSelectionOperation) {
|
||||
redoMutationsInfo.push(setSelectionOperation);
|
||||
}
|
||||
}
|
||||
|
||||
redoMutationsInfo = mergeSetRangeValues(redoMutationsInfo);
|
||||
|
||||
@@ -42,6 +42,7 @@ import {
|
||||
CodeIcon,
|
||||
ConditionsDoubleIcon,
|
||||
CopyDoubleIcon,
|
||||
CutIcon,
|
||||
DeleteCellMoveDownDoubleIcon,
|
||||
DeleteCellShiftLeftDoubleIcon,
|
||||
DeleteCellShiftRightDoubleIcon,
|
||||
@@ -169,6 +170,7 @@ const iconList: Record<string, ForwardRefExoticComponent<any>> = {
|
||||
CodeIcon,
|
||||
ConditionsDoubleIcon,
|
||||
CopyDoubleIcon,
|
||||
CutIcon,
|
||||
DeleteCellMoveDownDoubleIcon,
|
||||
DeleteCellShiftLeftDoubleIcon,
|
||||
DeleteCellShiftRightDoubleIcon,
|
||||
|
||||
Reference in New Issue
Block a user