From 3b35997b2f79428a6fda4bc03d2043a293373054 Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Wed, 20 Oct 2021 23:19:20 +0100 Subject: [PATCH] feat: general cleanup --- packages/dockview/src/__tests__/lifecycle.spec.ts | 2 ++ .../src/dockview/components/tab/defaultTab.ts | 2 ++ packages/dockview/src/focusedElement.ts | 11 +++++++---- packages/dockview/src/gridview/gridview.ts | 1 + packages/dockview/src/groupview/tab.ts | 15 +-------------- .../dockview/src/splitview/splitviewComponent.ts | 2 +- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/packages/dockview/src/__tests__/lifecycle.spec.ts b/packages/dockview/src/__tests__/lifecycle.spec.ts index 85dfeedb9..ec0d32c8a 100644 --- a/packages/dockview/src/__tests__/lifecycle.spec.ts +++ b/packages/dockview/src/__tests__/lifecycle.spec.ts @@ -20,5 +20,7 @@ describe('lifecycle', () => { mutableDisposable.dispose(); expect(disposed).toBe(2); + + mutableDisposable.dispose(); }); }); diff --git a/packages/dockview/src/dockview/components/tab/defaultTab.ts b/packages/dockview/src/dockview/components/tab/defaultTab.ts index 2a9cdd381..f9dc814c2 100644 --- a/packages/dockview/src/dockview/components/tab/defaultTab.ts +++ b/packages/dockview/src/dockview/components/tab/defaultTab.ts @@ -94,6 +94,8 @@ export class DefaultTab extends CompositeDisposable implements ITabRenderer { constructor() { super(); + this.addDisposables(this.isDirtyDisposable); + this._element = document.createElement('div'); this._element.className = 'default-tab'; // diff --git a/packages/dockview/src/focusedElement.ts b/packages/dockview/src/focusedElement.ts index 959a72e8b..b694815b8 100644 --- a/packages/dockview/src/focusedElement.ts +++ b/packages/dockview/src/focusedElement.ts @@ -1,8 +1,11 @@ export const focusedElement: { element: Element | null } = { element: null }; -//TODO somebody could call .stopPropagation() on this - can you do this at the event capture-stage instead? -window.addEventListener('focusin', () => { - focusedElement.element = document.activeElement; -}); +window.addEventListener( + 'focusin', + () => { + focusedElement.element = document.activeElement; + }, + true +); focusedElement.element = document.activeElement; diff --git a/packages/dockview/src/gridview/gridview.ts b/packages/dockview/src/gridview/gridview.ts index 8dd1f95e4..aca4484fa 100644 --- a/packages/dockview/src/gridview/gridview.ts +++ b/packages/dockview/src/gridview/gridview.ts @@ -275,6 +275,7 @@ export class Gridview implements IDisposable { } public dispose() { + this.disposable.dispose(); this._onDidChange.dispose(); this.root.dispose(); } diff --git a/packages/dockview/src/groupview/tab.ts b/packages/dockview/src/groupview/tab.ts index 02338b3da..fe4e52399 100644 --- a/packages/dockview/src/groupview/tab.ts +++ b/packages/dockview/src/groupview/tab.ts @@ -115,20 +115,7 @@ export class Tab extends CompositeDisposable implements ITab { */ event.stopPropagation(); - /** - * //TODO mousedown focusing with draggable element (is there a better approach?) - * - * this mousedown event wants to focus the tab itself but if we call preventDefault() - * this would also prevent the dragStart event from firing. To get around this we propagate - * the onChanged event during the next tick of the event-loop, allowing the tab element to become - * focused on this tick and ensuring the dragstart event is not interrupted - */ - - const oldFocus = focusedElement.element as HTMLElement; - setTimeout(() => { - oldFocus.focus(); - this._onChanged.fire({ kind: MouseEventKind.CLICK, event }); - }, 0); + this._onChanged.fire({ kind: MouseEventKind.CLICK, event }); }), addDisposableListener(this._element, 'contextmenu', (event) => { this._onChanged.fire({ diff --git a/packages/dockview/src/splitview/splitviewComponent.ts b/packages/dockview/src/splitview/splitviewComponent.ts index 81efee079..6b227975e 100644 --- a/packages/dockview/src/splitview/splitviewComponent.ts +++ b/packages/dockview/src/splitview/splitviewComponent.ts @@ -279,7 +279,7 @@ export class SplitviewComponent return; } const { width, height } = - this.element.parentElement?.getBoundingClientRect(); + this.element.parentElement.getBoundingClientRect(); this.layout(width, height); }