diff --git a/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts b/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts index 6e780baf60..63c33a2cc1 100644 --- a/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts +++ b/blocksuite/affine/widgets/widget-toolbar/src/toolbar.ts @@ -157,6 +157,9 @@ export class AffineToolbarWidget extends WidgetComponent { .map(id => gfx.getElementById(id)) .filter(model => model !== null) as GfxModel[]; + // Should double check + activated &&= Boolean(elements.length); + hasLocked = elements.some(e => e.isLocked()); const grouped = groupBy( diff --git a/tests/affine-local/e2e/blocksuite/toolbar.spec.ts b/tests/affine-local/e2e/blocksuite/toolbar.spec.ts index 10f4cddb1e..8156f535ab 100644 --- a/tests/affine-local/e2e/blocksuite/toolbar.spec.ts +++ b/tests/affine-local/e2e/blocksuite/toolbar.spec.ts @@ -1,5 +1,10 @@ import { test } from '@affine-test/kit/playwright'; -import { locateToolbar } from '@affine-test/kit/utils/editor'; +import { + clickEdgelessModeButton, + dragView, + locateToolbar, + setEdgelessTool, +} from '@affine-test/kit/utils/editor'; import { selectAllByKeyboard } from '@affine-test/kit/utils/keyboard'; import { openHomePage } from '@affine-test/kit/utils/load-page'; import { @@ -158,3 +163,36 @@ test.describe('Formatting', () => { await expect(textSpan2).toHaveCSS('background-color', hexToRGB(bgColor)); }); }); + +test('should not show toolbar when releasing spacebar and elements have been deleted', async ({ + page, +}) => { + await clickEdgelessModeButton(page); + + await setEdgelessTool(page, 'shape'); + await dragView(page, [100, 300], [200, 400]); + + const toolbar = locateToolbar(page); + + await expect(toolbar).toBeVisible(); + + await page.keyboard.down('Space'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.up('Space'); + + await expect(toolbar).toBeVisible(); + + await page.keyboard.press('Delete'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.down('Space'); + + await expect(toolbar).toBeHidden(); + + await page.keyboard.up('Space'); + + await expect(toolbar).toBeHidden(); +});