@@ -166,7 +166,18 @@ class _AppState extends ConsumerState<App> with WindowListener {
166166 final daemonAvailable = ref.read (daemonAvailableProvider);
167167 final vmsRunning =
168168 ref.read (vmStatusesProvider).values.contains (Status .RUNNING );
169- if (! daemonAvailable || ! vmsRunning) windowManager.destroy ();
169+ final closeJob = ref.read (guiSettingProvider (onAppCloseKey));
170+
171+ // nothing to do
172+ if (! daemonAvailable || ! vmsRunning || closeJob == 'nothing' ) {
173+ windowManager.destroy ();
174+ return ;
175+ }
176+
177+ // checking the need to restore the window
178+ if (! await windowManager.isVisible () || await windowManager.isMinimized ()) {
179+ windowManager.showAndRestore ();
180+ }
170181
171182 stopAllInstances () {
172183 final notificationsNotifier = ref.read (notificationsProvider.notifier);
@@ -181,31 +192,28 @@ class _AppState extends ConsumerState<App> with WindowListener {
181192 );
182193 }
183194
184- switch (ref.read (guiSettingProvider (onAppCloseKey))) {
185- case 'nothing' :
186- windowManager.destroy ();
187- case 'stop' :
188- stopAllInstances ();
189- default :
190- showDialog (
191- context: context,
192- barrierDismissible: false ,
193- builder: (context) => BeforeQuitDialog (
194- onStop: (remember) {
195- ref
196- .read (guiSettingProvider (onAppCloseKey).notifier)
197- .set (remember ? 'stop' : 'ask' );
198- stopAllInstances ();
199- Navigator .pop (context);
200- },
201- onKeep: (remember) {
202- ref
203- .read (guiSettingProvider (onAppCloseKey).notifier)
204- .set (remember ? 'nothing' : 'ask' );
205- windowManager.destroy ();
206- },
207- ),
208- );
195+ if (closeJob == 'ask' ) {
196+ showDialog (
197+ context: context,
198+ barrierDismissible: false ,
199+ builder: (context) => BeforeQuitDialog (
200+ onStop: (remember) {
201+ ref
202+ .read (guiSettingProvider (onAppCloseKey).notifier)
203+ .set (remember ? 'stop' : 'ask' );
204+ stopAllInstances ();
205+ Navigator .pop (context);
206+ },
207+ onKeep: (remember) {
208+ ref
209+ .read (guiSettingProvider (onAppCloseKey).notifier)
210+ .set (remember ? 'nothing' : 'ask' );
211+ windowManager.destroy ();
212+ },
213+ ),
214+ );
215+ } else {
216+ stopAllInstances ();
209217 }
210218 }
211219}
0 commit comments