diff --git a/website/src/lib/components/Menu.svelte b/website/src/lib/components/Menu.svelte index c89d139b6..224c75c81 100644 --- a/website/src/lib/components/Menu.svelte +++ b/website/src/lib/components/Menu.svelte @@ -354,12 +354,17 @@ {/if} - - engine.delete()} disabled={selectionCount == 0}> - - {i18n._('menu.delete')} - - + {#if !desktop} + + engine.delete()} + disabled={selectionCount == 0} + > + + {i18n._('menu.delete')} + + + {/if} diff --git a/website/src/lib/components/file-list/FileListNodeLabel.svelte b/website/src/lib/components/file-list/FileListNodeLabel.svelte index 9983d0192..5193890e1 100644 --- a/website/src/lib/components/file-list/FileListNodeLabel.svelte +++ b/website/src/lib/components/file-list/FileListNodeLabel.svelte @@ -17,6 +17,7 @@ Maximize, Scissors, FileStack, + FileX, } from '@lucide/svelte'; import { getContext } from 'svelte'; import { i18n } from '$lib/i18n/i18n.svelte'; @@ -34,10 +35,12 @@ isInClipboard, isSelected, selectedElementIds, + selectedFileIds, selectionSize, type FileTreeNode, } from '$lib/engine/selection-helpers'; import { boundsManager } from '$lib/state/bounds'; + import { closeFiles } from '$lib/actions/file-actions'; import { waypointPopup } from '$lib/components/map/gpx-layer/gpx-layer-popup'; let { @@ -92,6 +95,9 @@ selectedElementIds($selection)[0]?.ids[0] === elementId(node) ); + // the desktop app: the files are linked to the file system, they are closed rather than deleted + let desktop = $derived($workspace !== undefined); + // the file is not the one on the disk (the desktop app) let unsaved = $derived(node.type === 'file' && $workspace?.files[node.fileId]?.dirty === true); let hidden = $derived(isHidden(fileState, elementId(node))); @@ -296,10 +302,18 @@ {/if} - engine.delete()}> - - {i18n._('menu.delete')} - - + {#if desktop && node.type === 'file'} + closeFiles(selectedFileIds($selection))}> + + {i18n._('menu.close')} + + + {:else} + engine.delete()}> + + {i18n._('menu.delete')} + + + {/if}