- NSRect cocoaRect = [m_cocoaNSView frame];
- wxSize size((int)cocoaRect.size.width+10,(int)cocoaRect.size.height);
- [m_cocoaNSView setFrame: storedRect];
- wxLogTrace(wxTRACE_COCOA_Window_Size,wxT("wxControl=%p::DoGetBestSize()==(%d,%d)"),this,size.x,size.y);
- return size;
+ didFit = true;
+NS_HANDLER
+ // TODO: if anything other than method not implemented, re-raise
+NS_ENDHANDLER
+ if(didFit)
+ {
+ NSRect cocoaRect = [m_cocoaNSView frame];
+ wxSize size((int)ceilf(cocoaRect.size.width),(int)ceilf(cocoaRect.size.height));
+ [m_cocoaNSView setFrame: storedRect];
+ wxLogTrace(wxTRACE_COCOA_Window_Size,wxT("wxControl=%p::DoGetBestSize()==(%d,%d) from sizeToFit"),this,size.x,size.y);
+ return size;
+ }
+ // Cocoa can't tell us the size, probably not an NSControl.
+ wxLogDebug(wxT("Class %s (or superclass still below wxControl) should implement DoGetBestSize()"),GetClassInfo()->GetClassName());
+ return wxControlBase::DoGetBestSize();