]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/app.cpp
fixed include dependency
[wxWidgets.git] / src / mac / carbon / app.cpp
index dd66fb10e44544197e576fd15e96616a29e3ca3e..e28fe3d9139aa7bba7045f95aa0e7b332baa1e2b 100644 (file)
@@ -304,11 +304,37 @@ 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* 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 ) ;
+    }
 }
 
 //----------------------------------------------------------------------