X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e4b712e2455dfc6e5303c428119b435d8d6182ed..8d3b6b8aa1cc0d2f927cedd36d490d412ed3da29:/src/mac/carbon/frame.cpp diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp index b56f24712b..d7cc70101e 100644 --- a/src/mac/carbon/frame.cpp +++ b/src/mac/carbon/frame.cpp @@ -9,10 +9,12 @@ // 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 // ---------------------------------------------------------------------------- @@ -62,31 +64,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, @@ -95,16 +72,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; @@ -141,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); } } @@ -254,22 +223,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) @@ -278,6 +257,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 @@ -306,10 +289,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); @@ -318,20 +300,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 ); } } }