diff --git a/include/wx/msw/frame.h b/include/wx/msw/frame.h index ed17ffef9b..300931980a 100644 --- a/include/wx/msw/frame.h +++ b/include/wx/msw/frame.h @@ -155,6 +155,9 @@ private: WXHWND m_hwndToolTip; #endif // tooltips + // used by IconizeChildFrames(), see comments there + bool m_wasMinimized; + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxFrame) }; diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 3b555428be..57ac80ebfc 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -112,6 +112,8 @@ void wxFrame::Init() m_fsToolBarHeight = 0; // m_fsMenu = 0; + m_wasMinimized = FALSE; + m_winLastFocused = (wxWindow *)NULL; } @@ -523,7 +525,18 @@ void wxFrame::IconizeChildFrames(bool bIconize) #endif // wxUSE_MDI_ARCHITECTURE ) { - frame->Iconize(bIconize); + // we don't want to restore the child frames which had been + // iconized even before we were iconized, so save the child frame + // status when iconizing the parent frame and check it when + // restoring it + if ( bIconize ) + { + frame->m_wasMinimized = frame->IsIconized(); + } + + // this test works for both iconizing and restoring + if ( !frame->m_wasMinimized ) + frame->Iconize(bIconize); } } }