@@ -166,7 +166,15 @@ 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 ||
173
+ ! vmsRunning ||
174
+ closeJob == 'nothing' ) {
175
+ windowManager.destroy ();
176
+ return ;
177
+ }
170
178
171
179
stopAllInstances () {
172
180
final notificationsNotifier = ref.read (notificationsProvider.notifier);
@@ -181,31 +189,34 @@ class _AppState extends ConsumerState<App> with WindowListener {
181
189
);
182
190
}
183
191
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
- );
192
+ // checking the need to restore the window
193
+ if (! await windowManager.isVisible () ||
194
+ await windowManager.isMinimized ()) {
195
+ windowManager.showAndRestore ();
196
+ }
197
+
198
+ if (closeJob == 'ask' ) {
199
+ showDialog (
200
+ context: context,
201
+ barrierDismissible: false ,
202
+ builder: (context) => BeforeQuitDialog (
203
+ onStop: (remember) {
204
+ ref
205
+ .read (guiSettingProvider (onAppCloseKey).notifier)
206
+ .set (remember ? 'stop' : 'ask' );
207
+ stopAllInstances ();
208
+ Navigator .pop (context);
209
+ },
210
+ onKeep: (remember) {
211
+ ref
212
+ .read (guiSettingProvider (onAppCloseKey).notifier)
213
+ .set (remember ? 'nothing' : 'ask' );
214
+ windowManager.destroy ();
215
+ },
216
+ ),
217
+ );
218
+ } else {
219
+ stopAllInstances ();
209
220
}
210
221
}
211
222
}
0 commit comments