improved preview

This commit is contained in:
vcoppe committed 2026-10-18 09:32:18 +02:00
1 parent b64c192c4f
commit 9033401094
11 files changed
+109 -4

No files matched your search

+1
View File
@@ -212,6 +212,7 @@ export async function createTauriBackend(): Promise<Backend> {
workspace: () => invoke<WorkspaceState>('workspace_state'),
openFiles: () => invoke<Outcome>('open_files'),
openPaths: (paths, preview) => invoke<Outcome>('open_paths', { paths, preview }),
keepFiles: (fileIds) => invoke('keep_files', { fileIds }),
openFolder: (unsaved) => invoke<Outcome>('open_folder', { unsaved }),
closeFolder: (unsaved) => invoke<Outcome>('close_folder', { unsaved }),
closeFiles: (fileIds, unsaved) => invoke<Outcome>('close_files', { fileIds, unsaved }),
+2
View File
@@ -64,6 +64,8 @@ export interface DesktopFiles {
* edited or opened for good. Otherwise they are open for good.
*/
openPaths(paths: string[], preview?: boolean): Promise<Outcome>;
/** The files are open for good: the preview among them is not a preview anymore. */
keepFiles(fileIds: string[]): Promise<void>;
/**
* Opens the folder that the user picks, which is watched. Its files are not opened: they are
* in its tree (`listFolder`). The folder that was open is closed with its files (see
+13
View File
@@ -570,6 +570,18 @@ class Engine {
return this.addedBy((b) => b.desktop!.openPaths(paths, preview));
}
/**
* The files are open for good (the desktop app): the preview among them stays when another file
* is opened or selected. The user did something to it, which the engine does not see (opening
* its menu or its info, hiding it, dragging it). Nothing is done for the other files.
*/
async keepPreview(fileIds: string[]) {
const workspace = get(this._workspace);
if (fileIds.some((id) => workspace?.files[id]?.preview)) {
await this.desktopCall((desktop) => desktop.keepFiles(fileIds));
}
}
// What the explorer does to the tree of the open folder (the desktop app). When it fails,
// `lastError` tells why (a key of the dictionaries, or a message).
@@ -800,6 +812,7 @@ class Engine {
if (!store) {
return;
}
void this.keepPreview([fileId]);
const visibility = setHidden(
get(store).structure,
this._visibility.get(fileId) ?? new Map(),