From 776d55fd6936b9077293ce2b69019a81739a28b0 Mon Sep 17 00:00:00 2001 From: FlamingNineteen Date: Fri, 13 Jun 2025 21:06:11 -0700 Subject: [PATCH] Add resume session desktop setting --- src-main/index.js | 15 +++++++++++++-- src-main/l10n/en.json | 4 ++++ src-main/settings.js | 7 +++++++ src-main/windows/editor.js | 4 ++++ src-preload/desktop-settings.js | 1 + .../desktop-settings/desktop-settings.html | 13 +++++++++++++ 6 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src-main/index.js b/src-main/index.js index a688ac9a..7dca1588 100644 --- a/src-main/index.js +++ b/src-main/index.js @@ -227,10 +227,21 @@ app.whenReady().then(() => { isMigrating = false; const commandLineOptions = parseCommandLine(process.argv); - EditorWindow.openFiles([ + let filesToOpen = [ ...filesQueuedToOpen, ...commandLineOptions.files - ], commandLineOptions.fullscreen, process.cwd()); + ]; + + // If no files specified and resumeSession is enabled, try to open lastOpenedFile + if ( + filesToOpen.length === 0 && + settings.resumeSession && + settings.lastOpenedFile + ) { + filesToOpen = [settings.lastOpenedFile]; + } + + EditorWindow.openFiles(filesToOpen, commandLineOptions.fullscreen, process.cwd()); if (AbstractWindow.getAllWindows().length === 0) { // No windows were successfully opened. Let's just quit. diff --git a/src-main/l10n/en.json b/src-main/l10n/en.json index c68a211f..a7336711 100644 --- a/src-main/l10n/en.json +++ b/src-main/l10n/en.json @@ -263,6 +263,10 @@ "string": "Enable spell checker", "developer_comment": "Option in desktop settings to disable spell checking" }, + "desktop-settings.resume-session": { + "string": "Continue from the last opened file.", + "developer_comment": "Desktop settings option to enable session resuming" + }, "desktop-settings.exit-fullscreen-on-escape": { "string": "Exit F11 fullscreen mode (not the fullscreen button in the editor) when pressing escape", "developer_comment": "Refering to when an entire window is in fullscreen by pressing F11 or the maximize button on macOS, not the fullscreen mode you get by pressing the fullscreen button in the editor." diff --git a/src-main/settings.js b/src-main/settings.js index 4a4f72ff..57083f33 100644 --- a/src-main/settings.js +++ b/src-main/settings.js @@ -164,6 +164,13 @@ class Settings { this.data.spellchecker = spellchecker; } + get resumeSession () { + return this.data.resumeSession !== false; + } + set resumeSession (resumeSession) { + this.data.resumeSession = resumeSession; + } + get exitFullscreenOnEscape () { return this.data.exitFullscreenOnEscape !== false; } diff --git a/src-main/windows/editor.js b/src-main/windows/editor.js index 20ecdd6e..836875c1 100644 --- a/src-main/windows/editor.js +++ b/src-main/windows/editor.js @@ -644,6 +644,10 @@ class EditorWindow extends ProjectRunningWindow { new EditorWindow(parseOpenedFile(file, workingDirectory), fullscreen); } } + if (files && files.length > 0) { + settings.lastOpenedFile = files[0]; + settings.save(); + } } /** diff --git a/src-preload/desktop-settings.js b/src-preload/desktop-settings.js index e730d438..787cc96e 100644 --- a/src-preload/desktop-settings.js +++ b/src-preload/desktop-settings.js @@ -11,6 +11,7 @@ contextBridge.exposeInMainWorld('DesktopSettingsPreload', { setBackgroundThrottling: (backgroundThrottling) => ipcRenderer.invoke('set-background-throttling', backgroundThrottling), setBypassCORS: (bypassCORS) => ipcRenderer.invoke('set-bypass-cors', bypassCORS), setSpellchecker: (spellchecker) => ipcRenderer.invoke('set-spellchecker', spellchecker), + setResumeSession: (resumeSession) => ipcRenderer.invoke('set-resume-session', resumeSession), setExitFullscreenOnEscape: (exitFullscreenOnEscape) => ipcRenderer.invoke('set-exit-fullscreen-on-escape', exitFullscreenOnEscape), setRichPresence: (richPresence) => ipcRenderer.invoke('set-rich-presence', richPresence), openUserData: () => ipcRenderer.invoke('open-user-data') diff --git a/src-renderer/desktop-settings/desktop-settings.html b/src-renderer/desktop-settings/desktop-settings.html index 44d53976..ffca2694 100644 --- a/src-renderer/desktop-settings/desktop-settings.html +++ b/src-renderer/desktop-settings/desktop-settings.html @@ -282,6 +282,19 @@

document.querySelector('.spellchecker-label').textContent = strings['desktop-settings.spellchecker']; + + +