X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/24c7767fc8e093be0f0790c78daeb12b4e58579b..fef5c55604e20e2a90843a2278b1f5c8c817dcee:/src/cocoa/frame.mm diff --git a/src/cocoa/frame.mm b/src/cocoa/frame.mm index 9d3ff26566..ca12e36e29 100644 --- a/src/cocoa/frame.mm +++ b/src/cocoa/frame.mm @@ -59,13 +59,13 @@ wxFrame::~wxFrame() void wxFrame::AttachMenuBar(wxMenuBar *mbar) { wxFrameBase::AttachMenuBar(mbar); - wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); + wxMenuBarManager::GetInstance()->UpdateMenuBar(); } void wxFrame::DetachMenuBar() { wxFrameBase::DetachMenuBar(); - wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); + wxMenuBarManager::GetInstance()->UpdateMenuBar(); } void wxFrame::SetMenuBar(wxMenuBar *menubar) @@ -78,7 +78,14 @@ void wxFrame::SetMenuBar(wxMenuBar *menubar) wxFrameBase::DetachMenuBar(); wxFrameBase::AttachMenuBar(menubar); - wxMenuBarManager::GetInstance()->UpdateWindowMenuBar(this); + wxMenuBarManager::GetInstance()->UpdateMenuBar(); +} + +wxMenuBar* wxFrame::GetAppMenuBar(wxCocoaNSWindow *win) +{ + if(GetMenuBar()) + return GetMenuBar(); + return wxFrameBase::GetAppMenuBar(win); } wxPoint wxFrame::GetClientAreaOrigin() const @@ -97,6 +104,13 @@ void wxFrame::CocoaSetWxWindowSize(int width, int height) 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 @@ -124,6 +138,8 @@ void wxFrame::UpdateFrameNSView() NSView *tbarNSView = m_frameToolBar->GetNSViewForSuperview(); if(![tbarNSView superview]) [m_frameNSView addSubview: tbarNSView]; + // Do this after addSubView so that SetSize can work + m_frameToolBar->SetSize(m_frameToolBar->DoGetBestSize()); NSRect tbarRect = [tbarNSView frame]; tbarRect.size.width = frameRect.size.width; tbarRect.origin.x = 0.0; @@ -149,7 +165,7 @@ void wxFrame::UpdateFrameNSView() [sbarNSView setAutoresizingMask: NSViewWidthSizable|NSViewMaxYMargin]; sbarheight = sbarRect.size.height; } - wxLogDebug("frame height=%f, tbar=%f, sbar=%f",frameRect.size.height,tbarheight,sbarheight); + wxLogDebug(wxT("frame height=%f, tbar=%f, sbar=%f"),frameRect.size.height,tbarheight,sbarheight); NSRect innerRect = [m_cocoaNSView frame]; innerRect.size.height = frameRect.size.height - tbarheight - sbarheight; innerRect.origin.y = sbarheight; @@ -184,6 +200,7 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, wxWindowID winid, const wxString& name) { + wxAutoNSAutoreleasePool pool; wxFrameBase::CreateStatusBar(number,style,winid,name); if(m_frameStatusBar) { @@ -198,6 +215,7 @@ void wxFrame::SetToolBar(wxToolBar *toolbar) { if(m_frameToolBar) { + m_frameToolBar->SetOwningFrame(NULL); [m_frameToolBar->GetNSViewForSuperview() removeFromSuperview]; [m_frameToolBar->GetNSViewForSuperview() setAutoresizingMask: NSViewMinYMargin]; if(m_frameToolBar->GetParent()) @@ -207,6 +225,7 @@ void wxFrame::SetToolBar(wxToolBar *toolbar) if(m_frameToolBar) { m_frameToolBar->CocoaRemoveFromParent(); + m_frameToolBar->SetOwningFrame(this); } UpdateFrameNSView(); } @@ -215,10 +234,12 @@ wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID winid, const wxString& name) { + wxAutoNSAutoreleasePool pool; wxFrameBase::CreateToolBar(style,winid,name); if(m_frameToolBar) { m_frameToolBar->CocoaRemoveFromParent(); + m_frameToolBar->SetOwningFrame(this); } UpdateFrameNSView(); return m_frameToolBar;