X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/140f2012cdfdadb7e622e3b52339e521fa4a67a6..0bd3b8eca1d6ef2749797f34216493fce0edd8d6:/src/mac/carbon/frame.cpp diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index 0cda00cb61..ac1391d4de 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -40,13 +40,7 @@ END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow) #endif -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -#define WX_MAC_STATUSBAR_HEIGHT 15 +#define WX_MAC_STATUSBAR_HEIGHT 18 // ---------------------------------------------------------------------------- // creation/destruction // ---------------------------------------------------------------------------- @@ -68,31 +62,6 @@ void wxFrame::Init() #endif } -wxPoint wxFrame::GetClientAreaOrigin() const -{ - // on mac we are at position -1,-1 with the control - wxPoint pt(0, 0); - -#if wxUSE_TOOLBAR - if ( GetToolBar() ) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if ( GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL ) - { - pt.x += w - 1; - } - else - { - pt.y += h - 1 ; - } - } -#endif // wxUSE_TOOLBAR - - return pt; -} - bool wxFrame::Create(wxWindow *parent, wxWindowID id, const wxString& title, @@ -101,16 +70,10 @@ bool wxFrame::Create(wxWindow *parent, long style, const wxString& name) { - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) ) return FALSE; - MacCreateRealWindow( title, pos , size , MacRemoveBordersFromStyle(style) , name ) ; - - m_macWindowBackgroundTheme = kThemeBrushDocumentWindowBackground ; - SetThemeWindowBackground( (WindowRef) m_macWindow , m_macWindowBackgroundTheme , false ) ; - wxModelessWindows.Append(this); return TRUE; @@ -147,23 +110,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); } } @@ -260,22 +221,32 @@ void wxFrame::AttachMenuBar( wxMenuBar *menuBar ) void wxFrame::DoGetClientSize(int *x, int *y) const { - wxWindow::DoGetClientSize( x , y ) ; + wxTopLevelWindow::DoGetClientSize( x , y ) ; #if wxUSE_STATUSBAR - if ( GetStatusBar() && y ) + if ( GetStatusBar() && GetStatusBar()->IsShown() && y ) { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - *y -= statusY; + if ( y) *y -= WX_MAC_STATUSBAR_HEIGHT; } #endif // wxUSE_STATUSBAR - wxPoint pt(GetClientAreaOrigin()); - if ( y ) - *y -= pt.y; - if ( x ) - *x -= pt.x; +#if wxUSE_TOOLBAR + wxToolBar *toolbar = GetToolBar(); + if ( toolbar && toolbar->IsShown() ) + { + int w, h; + toolbar->GetSize(&w, &h); + + if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL ) + { + if ( x ) *x -= w; + } + else + { + if ( y ) *y -= h; + } + } +#endif // wxUSE_TOOLBAR } void wxFrame::DoSetClientSize(int clientwidth, int clientheight) @@ -284,6 +255,10 @@ void wxFrame::DoSetClientSize(int clientwidth, int clientheight) int currentwidth , currentheight ; GetClientSize( ¤tclientwidth , ¤tclientheight ) ; + if ( clientwidth == -1 ) + clientwidth = currentclientwidth ; + if ( clientheight == -1 ) + clientheight = currentclientheight ; GetSize( ¤twidth , ¤theight ) ; // find the current client size @@ -312,10 +287,9 @@ void wxFrame::PositionToolBar() { int cw, ch; - cw = m_width ; - ch = m_height ; + GetSize( &cw , &ch ) ; - if ( GetStatusBar() ) + if ( GetStatusBar() && GetStatusBar()->IsShown()) { int statusX, statusY; GetStatusBar()->GetClientSize(&statusX, &statusY); @@ -324,20 +298,21 @@ void wxFrame::PositionToolBar() if (GetToolBar()) { - int tw, th; + int tx, ty, tw, th; + tx = ty = 0 ; + GetToolBar()->GetSize(& tw, & th); - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) { // 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(-1, -1, tw, ch + 2 , wxSIZE_NO_ADJUSTMENTS | wxSIZE_ALLOW_MINUS_ONE ); + GetToolBar()->SetSize(tx , ty , tw, ch , wxSIZE_NO_ADJUSTMENTS ); } else { // Use the 'real' position - GetToolBar()->SetSize(-1, -1, cw + 2, th, wxSIZE_NO_ADJUSTMENTS | wxSIZE_ALLOW_MINUS_ONE ); + GetToolBar()->SetSize(tx , ty , cw , th, wxSIZE_NO_ADJUSTMENTS ); } } }