]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/mdi.cpp
corrected wake up code
[wxWidgets.git] / src / mac / carbon / mdi.cpp
index 158f2df45ccdd0ebd8724442234cbb3564f070e7..c3951ca0e1965026b346b3ee6acc866498de35be 100644 (file)
@@ -9,18 +9,17 @@
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "mdi.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #if wxUSE_MDI
 
-#include "wx/mdi.h"
-#include "wx/menu.h"
-#include "wx/settings.h"
-#include "wx/log.h"
+#ifndef WX_PRECOMP
+    #include "wx/mdi.h"
+    #include "wx/log.h"
+    #include "wx/menu.h"
+    #include "wx/settings.h"
+    #include "wx/statusbr.h"
+#endif
 
 #include "wx/mac/private.h"
 #include "wx/mac/uma.h"
@@ -135,8 +134,11 @@ void wxMDIParentFrame::AddChild(wxWindowBase *child)
     {
         m_currentChild = wxDynamicCast(child, wxMDIChildFrame);
 
-        if ( m_currentChild && IsShown() && ShouldBeVisible() )
+        if ( m_currentChild && IsShown() && !ShouldBeVisible() )
         {
+            // we shouldn't remain visible any more
+            wxFrame::Show(false);
+            m_shouldBeShown = true;
         }
     }
 
@@ -287,11 +289,14 @@ bool wxMDIParentFrame::ShouldBeVisible() const
           node;
           node = node->GetNext() )
     {
-        if ( !wxDynamicCast(node->GetData(), wxMDIChildFrame)
+        wxWindow *win = node->GetData();
+
+        if ( win->IsShown()
+                && !wxDynamicCast(win, wxMDIChildFrame)
 #if wxUSE_STATUSBAR
-                && node->GetData() != GetStatusBar()
+                    && win != GetStatusBar()
 #endif // wxUSE_STATUSBAR
-                    && node->GetData() != GetClientWindow() )
+                        && win != GetClientWindow() )
         {
             // if we have a non-MDI child, do remain visible so that it could
             // be used