]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/frame.cpp
Update version to 2.9.4 in version.bkl too and rebake everything.
[wxWidgets.git] / src / osx / carbon / frame.cpp
index da1283489109ef266b9545665ea30b5d819ef01e..e7c53a27aa149c341f1771adda73b4985fbb7f8f 100644 (file)
@@ -29,6 +29,7 @@
 BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
   EVT_ACTIVATE(wxFrame::OnActivate)
   EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
 BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
   EVT_ACTIVATE(wxFrame::OnActivate)
   EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
+  EVT_SIZE(wxFrame::OnSize)
 END_EVENT_TABLE()
 
 #define WX_MAC_STATUSBAR_HEIGHT 18
 END_EVENT_TABLE()
 
 #define WX_MAC_STATUSBAR_HEIGHT 18
@@ -50,7 +51,6 @@ bool wxFrame::Create(wxWindow *parent,
            long style,
            const wxString& name)
 {
            long style,
            const wxString& name)
 {
-
     if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) )
         return false;
 
     if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) )
         return false;
 
@@ -80,7 +80,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const
         {
             pt.x += w;
         }
         {
             pt.x += w;
         }
-        else if ( HasFlag(wxTB_TOP) )
+        else if ( toolbar->HasFlag(wxTB_TOP) )
         {
 #if !wxOSX_USE_NATIVE_TOOLBAR
             pt.y += h;
         {
 #if !wxOSX_USE_NATIVE_TOOLBAR
             pt.y += h;
@@ -216,14 +216,12 @@ void wxFrame::OnActivate(wxActivateEvent& event)
     }
 }
 
     }
 }
 
-void wxFrame::HandleResized( double timestampsec )
-{
-    // according to the other ports we handle this within the OS level
-    // resize event, not within a wxSizeEvent
 
 
+void wxFrame::OnSize(wxSizeEvent& event)
+{
     PositionBars();
     PositionBars();
-
-    wxNonOwnedWindow::HandleResized( timestampsec );
+    
+    event.Skip();
 }
 
 #if wxUSE_MENUS
 }
 
 #if wxUSE_MENUS
@@ -274,11 +272,16 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
         int w, h;
         toolbar->GetSize(&w, &h);
 
         int w, h;
         toolbar->GetSize(&w, &h);
 
-        if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL )
+        if ( toolbar->IsVertical() )
         {
             if ( x )
                 *x -= w;
         }
         {
             if ( x )
                 *x -= w;
         }
+        else if ( toolbar->HasFlag( wxTB_BOTTOM ) )
+        {
+            if ( y )
+                *y -= h;
+        }
         else
         {
 #if !wxOSX_USE_NATIVE_TOOLBAR
         else
         {
 #if !wxOSX_USE_NATIVE_TOOLBAR
@@ -359,7 +362,7 @@ void wxFrame::PositionToolBar()
 {
     int cw, ch;
 
 {
     int cw, ch;
 
-    GetSize( &cw , &ch ) ;
+    wxTopLevelWindow::DoGetClientSize( &cw , &ch );
 
     int statusX = 0 ;
     int statusY = 0 ;
 
     int statusX = 0 ;
     int statusY = 0 ;
@@ -367,7 +370,7 @@ void wxFrame::PositionToolBar()
 #if wxUSE_STATUSBAR
     if (GetStatusBar() && GetStatusBar()->IsShown())
     {
 #if wxUSE_STATUSBAR
     if (GetStatusBar() && GetStatusBar()->IsShown())
     {
-        GetStatusBar()->GetClientSize(&statusX, &statusY);
+        GetStatusBar()->GetSize(&statusX, &statusY);
         ch -= statusY;
     }
 #endif
         ch -= statusY;
     }
 #endif
@@ -384,20 +387,25 @@ void wxFrame::PositionToolBar()
 
         tx = ty = 0 ;
         GetToolBar()->GetSize(&tw, &th);
 
         tx = ty = 0 ;
         GetToolBar()->GetSize(&tw, &th);
-        if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
+        if (GetToolBar()->HasFlag(wxTB_LEFT))
+        {
+            // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS
+            // means, pretend we don't have toolbar/status bar, so we
+            // have the original client size.
+            GetToolBar()->SetSize(tx , ty , tw, ch , wxSIZE_NO_ADJUSTMENTS );
+        }
+        else if (GetToolBar()->HasFlag(wxTB_RIGHT))
         {
             // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS
             // means, pretend we don't have toolbar/status bar, so we
             // have the original client size.
         {
             // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS
             // means, pretend we don't have toolbar/status bar, so we
             // have the original client size.
+            tx = cw - tw;
             GetToolBar()->SetSize(tx , ty , tw, ch , wxSIZE_NO_ADJUSTMENTS );
         }
             GetToolBar()->SetSize(tx , ty , tw, ch , wxSIZE_NO_ADJUSTMENTS );
         }
-        else if (GetToolBar()->GetWindowStyleFlag() & wxTB_BOTTOM)
+        else if (GetToolBar()->HasFlag(wxTB_BOTTOM))
         {
         {
-            //FIXME: this positions the tool bar almost correctly, but still it doesn't work right yet,
-            //as 1) the space for the 'old' top toolbar is still taken up, and 2) the toolbar
-            //doesn't extend it's width to the width of the frame.
             tx = 0;
             tx = 0;
-            ty = ch - (th + statusY);
+            ty = ch - th;
             GetToolBar()->SetSize(tx, ty, cw, th, wxSIZE_NO_ADJUSTMENTS );
         }
         else
             GetToolBar()->SetSize(tx, ty, cw, th, wxSIZE_NO_ADJUSTMENTS );
         }
         else