]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/frame.cpp
non-PCH build fix (according to Tinderbox).
[wxWidgets.git] / src / msw / frame.cpp
index 1d7e46da63b9d2be43810f30be4eec1757d78d28..9ede74a5ac7799bddc918f98bc76cad48e3be83e 100644 (file)
     #pragma hdrstop
 #endif
 
+#include "wx/frame.h"
+
 #ifndef WX_PRECOMP
-    #include "wx/frame.h"
+    #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
     #include "wx/app.h"
     #include "wx/menu.h"
     #include "wx/utils.h"
     #include "wx/mdi.h"
     #include "wx/panel.h"
     #include "wx/log.h"
+    #include "wx/toolbar.h"
+    #include "wx/statusbr.h"
+    #include "wx/menuitem.h"
 #endif // WX_PRECOMP
 
 #include "wx/msw/private.h"
 
-#ifdef __WXWINCE__
-#include <commctrl.h>
-#endif
-
 #if defined(__POCKETPC__) || defined(__SMARTPHONE__)
     #include <ole2.h>
     #include <aygshell.h>
     #include "wx/msw/winundef.h"
 #endif
 
-#if wxUSE_STATUSBAR
-    #include "wx/statusbr.h"
-    #include "wx/generic/statusbr.h"
-#endif // wxUSE_STATUSBAR
-
-#if wxUSE_TOOLBAR
-    #include "wx/toolbar.h"
-#endif // wxUSE_TOOLBAR
-
-#include "wx/menuitem.h"
+#include "wx/generic/statusbr.h"
 
 #ifdef __WXUNIVERSAL__
     #include "wx/univ/theme.h"
@@ -256,7 +248,16 @@ void wxFrame::DoGetClientSize(int *x, int *y) const
 
     if ( y )
         *y -= pt.y;
-
+#if wxUSE_TOOLBAR
+    if( y )
+    {
+        wxToolBar *toolbar = GetToolBar();
+        if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
+        {
+            *y -= toolbar->GetClientSize().y;
+        }
+    }
+#endif
 #if wxUSE_STATUSBAR
     // adjust client area height to take the status bar into account
     if ( y )
@@ -323,6 +324,11 @@ void wxFrame::PositionStatusBar()
 
     int w, h;
     GetClientSize(&w, &h);
+#if wxUSE_TOOLBAR
+    wxToolBar *toolbar = GetToolBar();
+    if( toolbar && toolbar->HasFlag( wxTB_BOTTOM ) )
+        h += toolbar->GetClientRect().height;
+#endif
     int sw, sh;
     m_frameStatusBar->GetSize(&sw, &sh);
 
@@ -568,6 +574,7 @@ wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& nam
 
 void wxFrame::PositionToolBar()
 {
+    int x = 0, y = 0;
     wxToolBar *toolbar = GetToolBar();
     if ( toolbar && toolbar->IsShown() )
     {
@@ -589,9 +596,19 @@ void wxFrame::PositionToolBar()
             height -= statbar->GetClientSize().y;
         }
 #endif // wxUSE_STATUSBAR
-
-        int x = 0;
-        int y = 0;
+    int tx, ty, tw, th;
+    toolbar->GetPosition( &tx, &ty );
+    toolbar->GetSize( &tw, &th );
+    if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) )
+    {
+        x = 0;
+        y = 0;
+    }
+    else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM )
+    {
+        x = 0;
+        y = height - th;
+    }
 #if defined(WINCE_WITH_COMMANDBAR)
         // We're using a commandbar - so we have to allow for it.
         if (GetMenuBar() && GetMenuBar()->GetCommandBar())
@@ -601,17 +618,21 @@ void wxFrame::PositionToolBar()
             y = rect.bottom - rect.top;
         }
 #endif
-
-        int tx, ty;
-        int tw, th;
-        toolbar->GetPosition(&tx, &ty);
-        toolbar->GetSize(&tw, &th);
-
+    if( ( toolbar->GetWindowStyleFlag() & wxTB_HORIZONTAL ) || ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) )
+    {
         // Adjust
         if (ty < 0 && (-ty == th))
             ty = 0;
         if (tx < 0 && (-tx == tw))
             tx = 0;
+    }
+    else if( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM )
+    {
+        if( ty < 0 && ( -ty == th ) )
+            ty = height - th;
+        if( tx < 0 && ( -tx == tw ) )
+            tx = 0;
+    }
 
         int desiredW = tw;
         int desiredH = th;
@@ -1063,7 +1084,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const
         {
             pt.x += w;
         }
-        else
+        else if( !( toolbar->GetWindowStyleFlag() & wxTB_BOTTOM ) )
         {
             pt.y += h;
         }