diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 5f9abcd6a..98d7ae912 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -323,3 +323,9 @@ appliedCurrentSchema.subscribe(value => { appliedCurrentSchemaValue = value; }); export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue; + +let openedModalsValue = []; +openedModals.subscribe(value => { + openedModalsValue = value; +}); +export const getOpenedModals = () => openedModalsValue; diff --git a/packages/web/src/tabpanel/TabsPanel.svelte b/packages/web/src/tabpanel/TabsPanel.svelte index 2ab5a20be..d18e0c906 100644 --- a/packages/web/src/tabpanel/TabsPanel.svelte +++ b/packages/web/src/tabpanel/TabsPanel.svelte @@ -224,7 +224,12 @@ category: 'Tabs', name: 'Close tab', keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : null, - testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1, + testEnabled: () => { + const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1; + const hasAnyModalOpen = getOpenedModals().length > 0; + + return hasAnyOtherTab && !hasConfirmModalOpen; + }, onClick: closeCurrentTab, }); @@ -283,6 +288,7 @@ draggingDbGroupTarget, draggingTab, draggingTabTarget, + getOpenedModals, } from '../stores'; import tabs from '../tabs'; import { setSelectedTab, switchCurrentDatabase } from '../utility/common';