X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5ca0d8122ab2ecbce178aa9f21f13270c4ffaca0..2ddb4d13585d5235556119fb1937273da9e433a3:/src/mac/carbon/notebmac.cpp diff --git a/src/mac/carbon/notebmac.cpp b/src/mac/carbon/notebmac.cpp index db806ca7e6..c8b4969a43 100644 --- a/src/mac/carbon/notebmac.cpp +++ b/src/mac/carbon/notebmac.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - // ============================================================================ // declarations // ============================================================================ @@ -20,6 +16,10 @@ // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- +#include "wx/wxprec.h" + +#if wxUSE_NOTEBOOK + #include "wx/app.h" #include "wx/string.h" #include "wx/log.h" @@ -125,7 +125,7 @@ bool wxNotebook::Create(wxWindow *parent, tabsize = kControlSizeSmall; } - m_peer = new wxMacControl() ; + m_peer = new wxMacControl(this) ; verify_noerr ( CreateTabsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , tabsize , tabstyle, 0, NULL, m_peer->GetControlRefAddr() ) ); @@ -163,34 +163,6 @@ wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const return DoGetSizeFromClientSize( sizePage ) ; } -wxSize wxNotebook::DoGetBestSize() const -{ - // calculate the max page size - wxSize size(0, 0); - - size_t count = GetPageCount(); - if ( count ) - { - for ( size_t n = 0; n < count; n++ ) - { - wxSize sizePage = m_pages[n]->GetSize(); - - if ( size.x < sizePage.x ) - size.x = sizePage.x; - if ( size.y < sizePage.y ) - size.y = sizePage.y; - } - } - else // no pages - { - // use some arbitrary default size - size.x = - size.y = 100; - } - - return CalcSizeFromPage(size); -} - int wxNotebook::SetSelection(size_t nPage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, wxT("notebook page out of range") ); @@ -361,57 +333,35 @@ void wxNotebook::MacSetupTabs() m_peer->SetMaximum( GetPageCount() ) ; wxNotebookPage *page; - ControlTabInfoRec info; + ControlTabInfoRecV1 info; const size_t countPages = GetPageCount(); for(size_t ii = 0; ii < countPages; ii++) { page = m_pages[ii]; - info.version = 0; + info.version = kControlTabInfoVersionOne; info.iconSuiteID = 0; - wxMacStringToPascal( page->GetLabel() , info.name ) ; - m_peer->SetData( ii+1, kControlTabInfoTag, &info ) ; - m_peer->SetTabEnabled( ii + 1 , true ) ; -#if TARGET_CARBON + wxMacCFStringHolder cflabel( page->GetLabel() , m_font.GetEncoding() ) ; + info.name = cflabel ; + m_peer->SetData( ii+1, kControlTabInfoTag, &info ) ; + if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 ) { - // tab controls only support very specific types of images, therefore we are doing an odyssee - // accross the icon worlds (even Apple DTS did not find a shorter path) - // in order not to pollute the icon registry we put every icon into (OSType) 1 and immediately - // afterwards Unregister it (IconRef is ref counted, so it will stay on the tab even if we - // unregister it) in case this will ever lead to having the same icon everywhere add some kind - // of static counter - const wxBitmap* bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ; - if ( bmap ) + const wxBitmap bmap = GetImageList()->GetBitmap( GetPageImage(ii ) ) ; + if ( bmap.Ok() ) { - wxBitmap scaledBitmap ; - if ( bmap->GetWidth() != 16 || bmap->GetHeight() != 16 ) - { - scaledBitmap = wxBitmap( bmap->ConvertToImage().Scale(16,16) ) ; - bmap = &scaledBitmap ; - } ControlButtonContentInfo info ; - wxMacCreateBitmapButton( &info , *bmap , kControlContentPictHandle) ; - IconFamilyHandle iconFamily = (IconFamilyHandle) NewHandle(0) ; - OSErr err = SetIconFamilyData( iconFamily, 'PICT' , (Handle) info.u.picture ) ; - wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ; - IconRef iconRef ; - err = RegisterIconRefFromIconFamily( 'WXNG' , (OSType) 1, iconFamily, &iconRef ) ; - wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ; - info.contentType = kControlContentIconRef ; - info.u.iconRef = iconRef ; - m_peer->SetData( ii+1,kControlTabImageContentTag, &info ); + + wxMacCreateBitmapButton( &info , bmap ) ; +#ifdef __WXDEBUG__ + OSStatus err = +#endif // __WXDEBUG__ + m_peer->SetData( ii+1,kControlTabImageContentTag, &info ); wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ; - if ( UMAGetSystemVersion() < 0x1030 ) - { - UnregisterIconRef( 'WXNG' , (OSType) 1 ) ; - } - - ReleaseIconRef( iconRef ) ; - DisposeHandle( (Handle) iconFamily ) ; + wxMacReleaseBitmapButton( &info ) ; } } -#endif + m_peer->SetTabEnabled( ii + 1 , true ) ; } Rect bounds; m_peer->GetRectInWindowCoords( &bounds ) ; @@ -598,3 +548,5 @@ wxInt32 wxNotebook::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTR return status ; } +#endif +