]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/frame.cpp
Implement wxMimeTypesManager on mac
[wxWidgets.git] / src / mac / carbon / frame.cpp
index 88b83c154057d1133c0ca711ceb9f0c0b46a93a3..5e1cc74cd934a2444e0d0e3448af4a726e8921cb 100644 (file)
@@ -6,13 +6,15 @@
 // Created:     1998-01-01
 // RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "frame.h"
 #endif
 
+#include "wx/wxprec.h"
+
 #include "wx/frame.h"
 #include "wx/statusbr.h"
 #include "wx/toolbar.h"
@@ -40,7 +42,7 @@ END_EVENT_TABLE()
 IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow)
 #endif
 
-#define WX_MAC_STATUSBAR_HEIGHT 15 
+#define WX_MAC_STATUSBAR_HEIGHT 18 
 // ----------------------------------------------------------------------------
 // creation/destruction
 // ----------------------------------------------------------------------------
@@ -110,23 +112,21 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id,
 
     statusBar = new wxStatusBar(this, id,
         style, name);
-    statusBar->SetSize( 100 , 15 ) ;
+    statusBar->SetSize( 100 , WX_MAC_STATUSBAR_HEIGHT ) ;
     statusBar->SetFieldsCount(number);
     return statusBar;
 }
 
 void wxFrame::PositionStatusBar()
 {
-    if (m_frameStatusBar )
+    if (m_frameStatusBar && m_frameStatusBar->IsShown() )
     {
         int w, h;
         GetClientSize(&w, &h);
-        int sw, sh;
-        m_frameStatusBar->GetSize(&sw, &sh);
         
         // 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, sh);
+        m_frameStatusBar->SetSize(0, h, w, WX_MAC_STATUSBAR_HEIGHT);
     }
 }
 
@@ -226,11 +226,9 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
     wxTopLevelWindow::DoGetClientSize( x , y ) ;
     
 #if wxUSE_STATUSBAR
-    if ( GetStatusBar() && y )
+    if ( GetStatusBar() && GetStatusBar()->IsShown() && y )
     {
-        int statusX, statusY;
-        GetStatusBar()->GetSize(&statusX, &statusY);
-        if ( y) *y -= statusY;
+        if ( y) *y -= WX_MAC_STATUSBAR_HEIGHT;
     }
 #endif // wxUSE_STATUSBAR
     
@@ -253,6 +251,21 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
 #endif // wxUSE_TOOLBAR
 }
 
+bool wxFrame::MacIsChildOfClientArea( const wxWindow* child ) const 
+{
+#if wxUSE_STATUSBAR
+    if ( child == GetStatusBar() )
+        return false ;
+#endif // wxUSE_STATUSBAR
+
+#if wxUSE_TOOLBAR
+    if ( child == GetToolBar() )
+        return false ;
+#endif // wxUSE_TOOLBAR
+
+    return wxFrameBase::MacIsChildOfClientArea( child ) ;
+}
+
 void wxFrame::DoSetClientSize(int clientwidth, int clientheight)
 {
     int currentclientwidth , currentclientheight ;
@@ -293,7 +306,7 @@ void wxFrame::PositionToolBar()
 
     GetSize( &cw , &ch ) ;
 
-    if ( GetStatusBar() )
+    if ( GetStatusBar() && GetStatusBar()->IsShown())
     {
       int statusX, statusY;
       GetStatusBar()->GetClientSize(&statusX, &statusY);