]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/frame.cpp
added const for Mac OS X compilation
[wxWidgets.git] / src / mac / carbon / frame.cpp
index b5498fec48450d102bf501997a0d0485eb4d28e5..bbbef8f74b2d7275e3c0d20525c576e038412644 100644 (file)
@@ -14,7 +14,7 @@
 #endif
 
 #include "wx/frame.h"
-#include "wx/mac/statusbr.h"
+#include "wx/statusbr.h"
 #include "wx/toolbar.h"
 #include "wx/menuitem.h"
 #include "wx/menu.h"
@@ -54,6 +54,14 @@ bool wxFrame::m_useNativeStatusBar = FALSE;
 
 void wxFrame::Init()
 {
+  m_frameMenuBar = NULL;
+
+#if wxUSE_TOOLBAR
+  m_frameToolBar = NULL ;
+#endif
+  m_frameStatusBar = NULL;
+  m_winLastFocused = NULL ;
+
     m_iconized = FALSE;
 
 #if wxUSE_TOOLTIPS
@@ -94,13 +102,6 @@ bool wxFrame::Create(wxWindow *parent,
            long style,
            const wxString& name)
 {
-  m_frameMenuBar = NULL;
-
-#if wxUSE_TOOLBAR
-  m_frameToolBar = NULL ;
-#endif
-  m_frameStatusBar = NULL;
-
   SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
 
   if ( id > -1 )
@@ -199,8 +200,9 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
 {
     wxStatusBar *statusBar = NULL;
 
-    statusBar = new wxStatusBar(this, id, style, name);
-
+    statusBar = new wxStatusBar(this, id,
+        style, name);
+       statusBar->SetSize( 100 , 15 ) ;
     statusBar->SetFieldsCount(number);
     return statusBar;
 }
@@ -216,7 +218,7 @@ void wxFrame::PositionStatusBar()
 
     // Since we wish the status bar to be directly under the client area,
     // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS.
-    m_frameStatusBar->SetSize(0, h, w, WX_MAC_STATUSBAR_HEIGHT );
+    m_frameStatusBar->SetSize(0, h, w, sh);
    }
 }
 
@@ -227,9 +229,8 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar)
         return;
     }
   
-    m_frameMenuBar = NULL;
     m_frameMenuBar = menuBar;
-    m_frameMenuBar->MacInstallMenuBar() ;
+//    m_frameMenuBar->MacInstallMenuBar() ;
     m_frameMenuBar->Attach(this);
 }
 
@@ -258,10 +259,21 @@ void wxFrame::OnActivate(wxActivateEvent& event)
 {
     if ( !event.GetActive() )
     {
+       // remember the last focused child
+        m_winLastFocused = FindFocus();
+        while ( m_winLastFocused )
+        {
+            if ( GetChildren().Find(m_winLastFocused) )
+                break;
+
+            m_winLastFocused = m_winLastFocused->GetParent();
+        }
+
         event.Skip();
-        return;
     }
-
+       else
+       {
+/*
     for ( wxWindowList::Node *node = GetChildren().GetFirst();
           node;
           node = node->GetNext() )
@@ -272,7 +284,7 @@ void wxFrame::OnActivate(wxActivateEvent& event)
         // restore focus
         wxWindow *child = node->GetData();
 
-        if ( !child->IsTopLevel()
+        if ( !child->IsTopLevel() && child->AcceptsFocus()
 #if wxUSE_TOOLBAR
              && !wxDynamicCast(child, wxToolBar)
 #endif // wxUSE_TOOLBAR
@@ -282,9 +294,17 @@ void wxFrame::OnActivate(wxActivateEvent& event)
            )
         {
             child->SetFocus();
-            return;
+            break;
         }
     }
+   */
+       wxSetFocusToChild(this, &m_winLastFocused);
+
+           if ( m_frameMenuBar != NULL )
+           {
+               m_frameMenuBar->MacInstallMenuBar() ;
+           }
+       }
 }
 
 void wxFrame::DoGetClientSize(int *x, int *y) const
@@ -296,8 +316,7 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
   {
     int statusX, statusY;
     GetStatusBar()->GetClientSize(&statusX, &statusY);
-    // right now this is a constant, this might change someday
-    *y -= WX_MAC_STATUSBAR_HEIGHT ;
+    *y -= statusY;
   }
 #endif // wxUSE_STATUSBAR