diff --git a/src/app/App.js b/src/app/App.js index 8716c4ed..b99878a4 100644 --- a/src/app/App.js +++ b/src/app/App.js @@ -2129,7 +2129,15 @@ export function App({ store, initialStatusMessage }) { } try { store.executeCommand(createDuplicateSelectionCommand()); - setStatusMessage("Duplicated selection."); + const duplicatedSelection = store.getState().selection; + const canGrabDuplicatedSelection = (duplicatedSelection.kind === "brushes" || duplicatedSelection.kind === "entities" || duplicatedSelection.kind === "modelInstances") && + duplicatedSelection.ids.length === 1; + if (canGrabDuplicatedSelection) { + beginTransformOperation("translate", "keyboard"); + } + else { + setStatusMessage("Duplicated selection."); + } return true; } catch (error) { diff --git a/tests/e2e/box-brush-authoring.e2e.ts b/tests/e2e/box-brush-authoring.e2e.ts index 80166f75..879b3776 100644 --- a/tests/e2e/box-brush-authoring.e2e.ts +++ b/tests/e2e/box-brush-authoring.e2e.ts @@ -142,6 +142,10 @@ test("shift+d duplicates the current selection and does not trigger while typing kind: "brushes" }); expect(Object.keys(afterDuplicateSnapshot.document.brushes)).toHaveLength(2); + expect(afterDuplicateSnapshot.viewportTransientState.transformSession).toMatchObject({ + kind: "active", + operation: "translate" + }); const duplicatedBrushId = afterDuplicateSnapshot.selection.ids?.[0]; expect(duplicatedBrushId).toBeDefined();