@@ -49,6 +49,11 @@ let tray: Tray | null = null
4949let selectedSourceName = ''
5050let editorHasUnsavedChanges = false
5151let isForceClosing = false
52+ const hasSingleInstanceLock = app . requestSingleInstanceLock ( )
53+
54+ if ( ! hasSingleInstanceLock ) {
55+ app . quit ( )
56+ }
5257
5358function closeEditorWindowBypassingUnsavedPrompt ( window : BrowserWindow | null ) {
5459 if ( ! window || window . isDestroyed ( ) ) {
@@ -72,6 +77,20 @@ function createWindow() {
7277 mainWindow = createHudOverlayWindow ( )
7378}
7479
80+ function focusOrCreateMainWindow ( ) {
81+ if ( BrowserWindow . getAllWindows ( ) . length === 0 ) {
82+ createWindow ( )
83+ return
84+ }
85+
86+ if ( mainWindow && ! mainWindow . isDestroyed ( ) ) {
87+ if ( mainWindow . isMinimized ( ) ) mainWindow . restore ( )
88+ mainWindow . show ( )
89+ mainWindow . focus ( )
90+ mainWindow . moveTop ( )
91+ }
92+ }
93+
7594function isEditorWindow ( window : BrowserWindow ) {
7695 return window . webContents . getURL ( ) . includes ( 'windowType=editor' )
7796}
@@ -321,14 +340,11 @@ app.on('window-all-closed', () => {
321340app . on ( 'activate' , ( ) => {
322341 // On OS X it's common to re-create a window in the app when the
323342 // dock icon is clicked and there are no other windows open.
324- if ( BrowserWindow . getAllWindows ( ) . length === 0 ) {
325- createWindow ( )
326- } else if ( mainWindow && ! mainWindow . isDestroyed ( ) ) {
327- if ( mainWindow . isMinimized ( ) ) mainWindow . restore ( ) ;
328- mainWindow . show ( ) ;
329- mainWindow . focus ( ) ;
330- mainWindow . moveTop ( ) ;
331- }
343+ focusOrCreateMainWindow ( )
344+ } )
345+
346+ app . on ( 'second-instance' , ( ) => {
347+ focusOrCreateMainWindow ( )
332348} )
333349
334350
0 commit comments