@@ -166,7 +166,18 @@ class _AppState extends ConsumerState<App> with WindowListener {
166
166
final daemonAvailable = ref.read (daemonAvailableProvider);
167
167
final vmsRunning =
168
168
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
+ }
170
181
171
182
stopAllInstances () {
172
183
final notificationsNotifier = ref.read (notificationsProvider.notifier);
@@ -181,31 +192,28 @@ class _AppState extends ConsumerState<App> with WindowListener {
181
192
);
182
193
}
183
194
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 ();
209
217
}
210
218
}
211
219
}
0 commit comments