X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..69c695466d495aca6ab44e3d8e4219fc00ff2146:/src/mac/carbon/notebmac.cpp?ds=sidebyside diff --git a/src/mac/carbon/notebmac.cpp b/src/mac/carbon/notebmac.cpp index 6dfa28f1f1..fa58eacad7 100644 --- a/src/mac/carbon/notebmac.cpp +++ b/src/mac/carbon/notebmac.cpp @@ -6,7 +6,7 @@ // Created: 1998-01-01 // RCS-ID: $Id$ // Copyright: (c) Stefan Csomor -// Licence: wxWidgets licence +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -125,8 +125,10 @@ bool wxNotebook::Create(wxWindow *parent, tabsize = kControlSizeSmall; } + m_peer = new wxMacControl() ; verify_noerr ( CreateTabsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , - tabsize , tabstyle, 0, NULL, (ControlRef*) &m_macControl) ); + tabsize , tabstyle, 0, NULL, m_peer->GetControlRefAddr() ) ); + MacPostControlCreate(pos,size) ; return TRUE ; @@ -161,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") ); @@ -277,6 +251,7 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage) if(m_nSelection >= 0) { m_pages[m_nSelection]->Show(true); } + InvalidateBestSize(); return page; } @@ -286,6 +261,7 @@ bool wxNotebook::DeleteAllPages() WX_CLEAR_ARRAY(m_pages) ; MacSetupTabs(); m_nSelection = -1 ; + InvalidateBestSize(); return TRUE; } @@ -329,7 +305,7 @@ bool wxNotebook::InsertPage(size_t nPage, { m_nSelection++; // while this still is the same page showing, we need to update the tabs - SetControl32BitValue( (ControlRef) m_macControl , m_nSelection + 1 ) ; + m_peer->SetValue( m_nSelection + 1 ) ; } // some page should be selected: either this one or the first one if there @@ -343,17 +319,18 @@ bool wxNotebook::InsertPage(size_t nPage, if ( selNew != -1 ) SetSelection(selNew); + InvalidateBestSize(); return true; } /* Added by Mark Newsam * When a page is added or deleted to the notebook this function updates -* information held in the m_macControl so that it matches the order +* information held in the control so that it matches the order * the user would expect. */ void wxNotebook::MacSetupTabs() { - SetControl32BitMaximum( (ControlRef) m_macControl , GetPageCount() ) ; + m_peer->SetMaximum( GetPageCount() ) ; wxNotebookPage *page; ControlTabInfoRec info; @@ -365,10 +342,8 @@ void wxNotebook::MacSetupTabs() info.version = 0; info.iconSuiteID = 0; wxMacStringToPascal( page->GetLabel() , info.name ) ; - - SetControlData( (ControlRef) m_macControl, ii+1, kControlTabInfoTag, - sizeof( ControlTabInfoRec) , (char*) &info ) ; - SetTabEnabled( (ControlRef) m_macControl , ii+1 , true ) ; + m_peer->SetData( ii+1, kControlTabInfoTag, &info ) ; + m_peer->SetTabEnabled( ii + 1 , true ) ; #if TARGET_CARBON if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 ) { @@ -397,8 +372,7 @@ void wxNotebook::MacSetupTabs() wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ; info.contentType = kControlContentIconRef ; info.u.iconRef = iconRef ; - SetControlData( (ControlRef) m_macControl, ii+1,kControlTabImageContentTag, - sizeof( info ), (Ptr)&info ); + m_peer->SetData( ii+1,kControlTabImageContentTag, &info ); wxASSERT_MSG( err == noErr , wxT("Error when setting icon on tab") ) ; if ( UMAGetSystemVersion() < 0x1030 ) { @@ -412,7 +386,7 @@ void wxNotebook::MacSetupTabs() #endif } Rect bounds; - UMAGetControlBoundsInWindowCoords((ControlRef)m_macControl, &bounds); + m_peer->GetRectInWindowCoords( &bounds ) ; InvalWindowRect((WindowRef)MacGetTopLevelWindowRef(), &bounds); } @@ -564,14 +538,14 @@ void wxNotebook::ChangePage(int nOldSel, int nSel) } m_nSelection = nSel; - SetControl32BitValue( (ControlRef) m_macControl , m_nSelection + 1 ) ; + m_peer->SetValue( m_nSelection + 1 ) ; } wxInt32 wxNotebook::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) ) { OSStatus status = eventNotHandledErr ; - SInt32 newSel = GetControl32BitValue( (ControlRef) m_macControl ) - 1 ; + SInt32 newSel = m_peer->GetValue() - 1 ; if ( newSel != m_nSelection ) { wxNotebookEvent changing(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId, @@ -589,7 +563,7 @@ wxInt32 wxNotebook::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTR } else { - SetControl32BitValue( (ControlRef) m_macControl , m_nSelection + 1 ) ; + m_peer->SetValue( m_nSelection + 1 ) ; } status = noErr ; }