From d620d2a998db0c1c5eecf7a2f1d984f7b971e0e1 Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 28 Feb 2011 18:41:21 +0000 Subject: [PATCH] programmatically minimize/restore window --- panda/src/windisplay/winGraphicsWindow.cxx | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/panda/src/windisplay/winGraphicsWindow.cxx b/panda/src/windisplay/winGraphicsWindow.cxx index 338bd33da0..0826cba135 100644 --- a/panda/src/windisplay/winGraphicsWindow.cxx +++ b/panda/src/windisplay/winGraphicsWindow.cxx @@ -332,6 +332,19 @@ set_properties_now(WindowProperties &properties) { properties.clear_foreground(); } + if (properties.has_minimized()) { + if (_properties.get_minimized() != properties.get_minimized()) { + if (properties.get_minimized()) { + ShowWindow(_hWnd, SW_MINIMIZE); + } else { + ShowWindow(_hWnd, SW_RESTORE); + } + _properties.set_minimized(properties.get_minimized()); + _properties.set_foreground(!properties.get_minimized()); + } + properties.clear_minimized(); + } + if (properties.has_fullscreen()) { if (properties.get_fullscreen() && !is_fullscreen()) { if (do_fullscreen_switch()){ @@ -393,6 +406,7 @@ open_window() { _cursor = LoadCursor(NULL, IDC_ARROW); } bool want_foreground = (!_properties.has_foreground() || _properties.get_foreground()); + bool want_minimized = (_properties.has_minimized() && _properties.get_minimized()) && !want_foreground; HWND old_foreground_window = GetForegroundWindow(); @@ -417,8 +431,13 @@ open_window() { SWP_NOMOVE | SWP_NOSENDCHANGING | SWP_NOSIZE); // need to do twice to override any minimized flags in StartProcessInfo - ShowWindow(_hWnd, SW_SHOWNORMAL); - ShowWindow(_hWnd, SW_SHOWNORMAL); + if (want_minimized) { + ShowWindow(_hWnd, SW_MINIMIZE); + ShowWindow(_hWnd, SW_MINIMIZE); + } else { + ShowWindow(_hWnd, SW_SHOWNORMAL); + ShowWindow(_hWnd, SW_SHOWNORMAL); + } HWND new_foreground_window = _hWnd; if (!want_foreground) {