From 3f42061b057d964c20ecaab8cb7728a2559867de Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 29 May 2004 14:56:49 +0000 Subject: [PATCH] reopen app according to HIG git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/app.cpp | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index dd66fb10e4..47af6e5cd1 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -304,11 +304,38 @@ void wxApp::MacNewFile() void wxApp::MacReopenApp() { - // eventually check for open docs, if none, call MacNewFile - wxTopLevelWindowMac* topLevelWindow = wxDynamicCast(GetTopWindow(), wxTopLevelWindowMac); - - if (topLevelWindow && topLevelWindow->IsIconized()) - topLevelWindow->Iconize(false); + // HIG says : + // if there is no open window -> create a new one + // if all windows are hidden -> show the first + // if some windows are not hidden -> do nothing + + wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); + if ( node == NULL ) + { + MacNewFile() ; + } + else + { + wxTopLevelWindow* win = NULL ; + wxTopLevelWindow* firstIconized = NULL ; + while (node) + { + wxTopLevelWindow* win = (wxTopLevelWindow*) node->GetData(); + if ( win->IsIconized() == false ) + { + firstIconized = NULL ; + break ; + } + else + { + if ( firstIconized == NULL ) + firstIconized = win ; + } + node = node->GetNext(); + } + if ( firstIconized ) + firstIconized->Iconize( false ) ; + } } //---------------------------------------------------------------------- -- 2.45.2