@@ -10,21 +10,34 @@ import logger from './logger';
10
10
11
11
import loadHtml from '../../../resources/html/load.html?asset' ;
12
12
13
- const winPool = { } ;
13
+ let winPool = { } ;
14
14
15
15
const createWin = ( name , options ) => {
16
16
const args = Object . assign ( { } , options ) ;
17
17
18
- let win = new BrowserWindow ( args ) ;
19
- winPool [ name ] = win . id ;
18
+ let win : BrowserWindow ;
19
+
20
+ if ( winPool [ name ] && ! getWin ( name ) ?. isDestroyed ( ) ) {
21
+ win = getWin ( name ) ! ;
22
+ if ( ! win . isVisible ( ) ) win . show ( ) ;
23
+ win . focus ( ) ;
24
+ setTimeout ( ( ) => {
25
+ win . reload ( ) ;
26
+ } , 0 ) ;
27
+ } else {
28
+ win = new BrowserWindow ( args ) ;
29
+ winPool [ name ] = win . id ;
30
+ }
20
31
21
32
return win ;
22
33
} ;
23
34
24
35
const getWin = ( name : string ) => {
25
36
const id = winPool [ name ] ;
26
37
logger . info ( `[winManager][getWin]name:${ name } id:${ id } ` ) ;
27
- return BrowserWindow . fromId ( Number ( id ) ) ;
38
+
39
+ if ( id ) return BrowserWindow . fromId ( Number ( id ) ) ;
40
+ else return null ;
28
41
} ;
29
42
30
43
const getAllWin = ( ) => {
@@ -79,6 +92,10 @@ const createMain = () => {
79
92
electronLocalshortcut . unregisterAll ( mainWindow ! ) ;
80
93
} ) ;
81
94
95
+ mainWindow . on ( 'closed' , ( ) => {
96
+ delete winPool [ 'main' ] ;
97
+ } ) ;
98
+
82
99
mainWindow . on ( 'ready-to-show' , ( ) => {
83
100
electronLocalshortcut . register ( mainWindow ! , [ 'CommandOrControl+Shift+I' , 'F12' ] , ( ) => {
84
101
if ( mainWindow ! . webContents . isDevToolsOpened ( ) ) {
@@ -202,6 +219,7 @@ const createPlay = () => {
202
219
} ) ;
203
220
204
221
playWindow . on ( 'closed' , ( ) => {
222
+ delete winPool [ 'play' ] ;
205
223
const mainWindow = getWin ( 'main' ) ;
206
224
if ( ! mainWindow || mainWindow . isDestroyed ( ) ) {
207
225
createMain ( ) ;
@@ -236,6 +254,9 @@ const createLoad = () => {
236
254
237
255
loadWindow . loadFile ( loadHtml ) ;
238
256
loadWindow . on ( 'ready-to-show' , ( ) => loadWindow ! . show ( ) ) ;
257
+ loadWindow . on ( 'closed' , ( ) => {
258
+ delete winPool [ 'load' ] ;
259
+ } ) ;
239
260
} ;
240
261
241
262
const getWindowState = ( name : string ) => {
0 commit comments