X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f02a879ed7efc5fcf6328ff47a1352ec82812b7..f98bd6d6cf33f0475b5d737a2968b42b7ea0009f:/src/mac/carbon/frame.cpp diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index 399749a1b3..d414c78a6b 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp +// Name: src/mac/carbon/frame.cpp // Purpose: wxFrame // Author: Stefan Csomor // Modified by: @@ -12,19 +12,21 @@ #include "wx/wxprec.h" #include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" -#include "wx/menu.h" -#include "wx/dcclient.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/app.h" + +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/dcclient.h" + #include "wx/menu.h" + #include "wx/dialog.h" + #include "wx/settings.h" + #include "wx/toolbar.h" + #include "wx/statusbr.h" + #include "wx/menuitem.h" +#endif // WX_PRECOMP #include "wx/mac/uma.h" extern wxWindowList wxModelessWindows; -extern wxList wxPendingDelete; BEGIN_EVENT_TABLE(wxFrame, wxFrameBase) EVT_ACTIVATE(wxFrame::OnActivate) @@ -44,20 +46,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow) void wxFrame::Init() { - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; m_winLastFocused = NULL; - -#if wxUSE_TOOLBAR - m_frameToolBar = NULL; -#endif - -#if wxUSE_TOOLTIPS - // NB: is this used anywhere? - m_hwndToolTip = NULL; -#endif - - m_iconized = false; } bool wxFrame::Create(wxWindow *parent, @@ -134,7 +123,7 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, wxStatusBar *statusBar; statusBar = new wxStatusBar(this, id, style, name); - statusBar->SetSize(100 , WX_MAC_STATUSBAR_HEIGHT); + statusBar->SetSize(100, WX_MAC_STATUSBAR_HEIGHT); statusBar->SetFieldsCount(number); return statusBar; @@ -204,21 +193,25 @@ void wxFrame::OnActivate(wxActivateEvent& event) ? m_winLastFocused->GetParent() : NULL; - if ( !parent ) + if (parent == NULL) parent = this; wxSetFocusToChild(parent, &m_winLastFocused); if (m_frameMenuBar != NULL) { - m_frameMenuBar->MacInstallMenuBar() ; + m_frameMenuBar->MacInstallMenuBar(); } - else if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->IsKindOf(CLASSINFO(wxFrame))) + else { - // Trying toplevel frame membar - if (((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()) - ((wxFrame*)wxTheApp->GetTopWindow())->GetMenuBar()->MacInstallMenuBar(); - } + wxFrame *tlf = wxDynamicCast( wxTheApp->GetTopWindow(), wxFrame ); + if (tlf != NULL) + { + // Trying top-level frame membar + if (tlf->GetMenuBar()) + tlf->GetMenuBar()->MacInstallMenuBar(); + } + } } } @@ -351,15 +344,19 @@ void wxFrame::PositionToolBar() int cw, ch; GetSize( &cw , &ch ) ; + + int statusX = 0 ; + int statusY = 0 ; +#if wxUSE_STATUSBAR if (GetStatusBar() && GetStatusBar()->IsShown()) { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); ch -= statusY; } +#endif +#if wxUSE_TOOLBAR if (GetToolBar()) { int tx, ty, tw, th; @@ -373,6 +370,15 @@ void wxFrame::PositionToolBar() // have the original client size. GetToolBar()->SetSize(tx , ty , tw, ch , wxSIZE_NO_ADJUSTMENTS ); } + else if (GetToolBar()->GetWindowStyleFlag() & 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; + ty = ch - (th + statusY); + GetToolBar()->SetSize(tx, ty, cw, th, wxSIZE_NO_ADJUSTMENTS ); + } else { #if !wxMAC_USE_NATIVE_TOOLBAR @@ -381,6 +387,7 @@ void wxFrame::PositionToolBar() #endif } } +#endif } void wxFrame::PositionBars() @@ -394,4 +401,3 @@ void wxFrame::PositionBars() } #endif -