X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c5bd91912f76aa6bea64f510c1b59f96492dc1b1..e4f1a68ad1a4c145878a7595c06859d3d59fc6e7:/src/cocoa/frame.mm diff --git a/src/cocoa/frame.mm b/src/cocoa/frame.mm index 4f3d12062f..f74bbf4a0a 100644 --- a/src/cocoa/frame.mm +++ b/src/cocoa/frame.mm @@ -9,15 +9,18 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/app.h" -#include "wx/log.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" +#include "wx/wxprec.h" +#ifndef WX_PRECOMP + #include "wx/log.h" + #include "wx/app.h" + #include "wx/frame.h" + #include "wx/menu.h" + #include "wx/toolbar.h" + #include "wx/statusbr.h" +#endif // WX_PRECOMP #include "wx/cocoa/autorelease.h" +#include "wx/cocoa/mbarman.h" #import #import @@ -53,37 +56,29 @@ wxFrame::~wxFrame() [m_frameNSView release]; } -void wxFrame::Cocoa_wxMenuItemAction(wxMenuItem& item) -{ - Command(item.GetId()); -} - void wxFrame::AttachMenuBar(wxMenuBar *mbar) { wxFrameBase::AttachMenuBar(mbar); - if(m_frameMenuBar) - { - wxLogDebug("Attached menu"); - [m_cocoaNSWindow setMenu:m_frameMenuBar->GetNSMenu()]; - } + wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); } void wxFrame::DetachMenuBar() { - if(m_frameMenuBar) - { - [m_cocoaNSWindow setMenu:nil]; - } wxFrameBase::DetachMenuBar(); + wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); } -bool wxFrame::Show(bool show) +void wxFrame::SetMenuBar(wxMenuBar *menubar) { - wxAutoNSAutoreleasePool pool; - bool ret = wxFrameBase::Show(show); - if(show && GetMenuBar()) - [wxTheApp->GetNSApplication() setMenu:GetMenuBar()->GetNSMenu() ]; - return ret; + if ( menubar == GetMenuBar() ) + { + // nothing to do + return; + } + + wxFrameBase::DetachMenuBar(); + wxFrameBase::AttachMenuBar(menubar); + wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); } wxPoint wxFrame::GetClientAreaOrigin() const @@ -95,11 +90,20 @@ void wxFrame::CocoaSetWxWindowSize(int width, int height) { if(m_frameStatusBar) height += m_frameStatusBar->GetSize().y; +#if wxUSE_TOOLBAR if(m_frameToolBar) height += m_frameToolBar->GetSize().y; +#endif //wxUSE_TOOLBAR wxTopLevelWindow::CocoaSetWxWindowSize(width,height); } +WX_NSView wxFrame::GetNonClientNSView() +{ + if(m_frameNSView) + return m_frameNSView; + return GetNSViewForSuperview(); +} + void wxFrame::CocoaReplaceView(WX_NSView oldView, WX_NSView newView) { // If we have the additional toolbar/statbar view, then the @@ -121,6 +125,7 @@ void wxFrame::UpdateFrameNSView() } NSRect frameRect = [m_frameNSView frame]; float tbarheight = 0.0; +#if wxUSE_TOOLBAR if(m_frameToolBar) { NSView *tbarNSView = m_frameToolBar->GetNSViewForSuperview(); @@ -135,6 +140,7 @@ void wxFrame::UpdateFrameNSView() [tbarNSView setAutoresizingMask: NSViewWidthSizable|NSViewMinYMargin]; tbarheight = tbarRect.size.height; } +#endif //wxUSE_TOOLBAR float sbarheight = 0.0; if(m_frameStatusBar) { @@ -170,7 +176,7 @@ void wxFrame::SetStatusBar(wxStatusBar *statusbar) [m_frameStatusBar->GetNSViewForSuperview() removeFromSuperview]; [m_frameStatusBar->GetNSViewForSuperview() setAutoresizingMask: NSViewMinYMargin]; if(m_frameStatusBar->GetParent()) - m_frameStatusBar->GetParent()->CocoaAddChild(m_frameToolBar); + m_frameStatusBar->GetParent()->CocoaAddChild(m_frameStatusBar); } m_frameStatusBar = statusbar; if(m_frameStatusBar) @@ -194,6 +200,7 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, return m_frameStatusBar; } +#if wxUSE_TOOLBAR void wxFrame::SetToolBar(wxToolBar *toolbar) { if(m_frameToolBar) @@ -223,6 +230,7 @@ wxToolBar* wxFrame::CreateToolBar(long style, UpdateFrameNSView(); return m_frameToolBar; } +#endif // wxUSE_TOOLBAR void wxFrame::PositionStatusBar() {