fix(editor): undo should remove the new frame created by dragging (#11303)
Close [BS-2848](https://linear.app/affine-design/issue/BS-2848/但我发现frame创建后,要撤销两次才能删掉)
This commit is contained in:
@@ -38,9 +38,7 @@ export class FrameTool extends BaseTool {
|
|||||||
override dragEnd(): void {
|
override dragEnd(): void {
|
||||||
if (this._frame) {
|
if (this._frame) {
|
||||||
const frame = this._frame;
|
const frame = this._frame;
|
||||||
this.doc.transact(() => {
|
frame.pop('xywh');
|
||||||
frame.pop('xywh');
|
|
||||||
});
|
|
||||||
// @ts-expect-error TODO: refactor gfx tool
|
// @ts-expect-error TODO: refactor gfx tool
|
||||||
this.gfx.tool.setTool('default');
|
this.gfx.tool.setTool('default');
|
||||||
this.gfx.selection.set({
|
this.gfx.selection.set({
|
||||||
@@ -52,8 +50,6 @@ export class FrameTool extends BaseTool {
|
|||||||
frame,
|
frame,
|
||||||
getTopElements(this.frameManager.getElementsInFrameBound(frame))
|
getTopElements(this.frameManager.getElementsInFrameBound(frame))
|
||||||
);
|
);
|
||||||
|
|
||||||
this.doc.captureSync();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._frame = null;
|
this._frame = null;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
pressBackspace,
|
pressBackspace,
|
||||||
pressEscape,
|
pressEscape,
|
||||||
SHORT_KEY,
|
SHORT_KEY,
|
||||||
|
undoByKeyboard,
|
||||||
} from '../../utils/actions/keyboard.js';
|
} from '../../utils/actions/keyboard.js';
|
||||||
import {
|
import {
|
||||||
assertCanvasElementsCount,
|
assertCanvasElementsCount,
|
||||||
@@ -412,3 +413,10 @@ test('outline should keep updated during a new frame created by frame-tool dragg
|
|||||||
await pickColorAtPoints(page, [start, [end[0] - 1, end[1] - 1]])
|
await pickColorAtPoints(page, [start, [end[0] - 1, end[1] - 1]])
|
||||||
).toEqual(['#1e96eb', '#1e96eb']);
|
).toEqual(['#1e96eb', '#1e96eb']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('undo should work when create a frame by dragging', async ({ page }) => {
|
||||||
|
await page.keyboard.press('f');
|
||||||
|
await dragBetweenViewCoords(page, [0, 0], [100, 100], { steps: 50 });
|
||||||
|
await undoByKeyboard(page);
|
||||||
|
await expect(page.locator('affine-frame')).toHaveCount(0);
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user