@@ -351,6 +351,16 @@ set_properties_now(WindowProperties &properties) {
351
351
windisplay_cat.warning ()
352
352
<< " Switching to windowed mode failed!\n " ;
353
353
}
354
+ } else if (properties.get_window_mode () != _properties.get_mouse_mode ()) {
355
+ if (properties.get_window_mode () == WindowProperties::W_hidden) {
356
+ ShowWindow (_hWnd, SW_HIDE);
357
+ _properties.set_window_mode (properties.get_window_mode ());
358
+ properties.clear_window_mode ();
359
+ } else if (!_properties.get_minimized ()) {
360
+ ShowWindow (_hWnd, SW_SHOWNORMAL);
361
+ _properties.set_window_mode (properties.get_window_mode ());
362
+ properties.clear_window_mode ();
363
+ }
354
364
}
355
365
}
356
366
@@ -451,8 +461,9 @@ open_window() {
451
461
if (_cursor == 0 ) {
452
462
_cursor = LoadCursor (NULL , IDC_ARROW);
453
463
}
454
- bool want_foreground = (!_properties.has_foreground () || _properties.get_foreground ());
455
- bool want_minimized = (_properties.has_minimized () && _properties.get_minimized ()) && !want_foreground;
464
+ bool want_hidden = (_properties.has_window_mode () && _properties.get_window_mode () == WindowProperties::W_hidden);
465
+ bool want_foreground = (!_properties.has_foreground () || _properties.get_foreground ()) && !want_hidden;
466
+ bool want_minimized = (_properties.has_minimized () && _properties.get_minimized ()) && !want_foreground && !want_hidden;
456
467
457
468
HWND old_foreground_window = GetForegroundWindow ();
458
469
@@ -476,6 +487,10 @@ open_window() {
476
487
SWP_NOMOVE | SWP_NOSENDCHANGING | SWP_NOSIZE);
477
488
478
489
// need to do twice to override any minimized flags in StartProcessInfo
490
+ if (want_hidden) {
491
+ ShowWindow (_hWnd, SW_HIDE);
492
+ ShowWindow (_hWnd, SW_HIDE);
493
+ }
479
494
if (want_minimized) {
480
495
ShowWindow (_hWnd, SW_MINIMIZE);
481
496
ShowWindow (_hWnd, SW_MINIMIZE);
0 commit comments