X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/681be2ef80274e6c39b243922a594c59e4983dab..ff534ba469473a9ace193e736ca131144df307f9:/src/osx/notebook_osx.cpp diff --git a/src/osx/notebook_osx.cpp b/src/osx/notebook_osx.cpp index 110a36e991..94d609af4e 100644 --- a/src/osx/notebook_osx.cpp +++ b/src/osx/notebook_osx.cpp @@ -38,24 +38,22 @@ BEGIN_EVENT_TABLE(wxNotebook, wxBookCtrlBase) EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) END_EVENT_TABLE() -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxBookCtrlBase) - bool wxNotebook::Create( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) -{ - m_macIsUserPane = false ; - +{ + DontCreatePeer(); + if (! (style & wxBK_ALIGN_MASK)) style |= wxBK_TOP; if ( !wxNotebookBase::Create( parent, id, pos, size, style, name ) ) return false; - m_peer = wxWidgetImpl::CreateTabView(this,parent, id, pos, size, style, GetExtraStyle() ); + SetPeer(wxWidgetImpl::CreateTabView(this,parent, id, pos, size, style, GetExtraStyle() )); MacPostControlCreate( pos, size ); @@ -147,7 +145,7 @@ bool wxNotebook::SetPageImage(size_t nPage, int nImage) { wxCHECK_MSG( IS_VALID_PAGE(nPage), false, wxT("SetPageImage: invalid notebook page") ); - wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), false, + wxCHECK_MSG( HasImageList() && nImage < GetImageList()->GetImageCount(), false, wxT("SetPageImage: invalid image index") ); if ( nImage != m_images[nPage] ) @@ -237,29 +235,20 @@ bool wxNotebook::InsertPage(size_t nPage, m_selection++; // while this still is the same page showing, we need to update the tabs - m_peer->SetValue( m_selection + 1 ) ; + GetPeer()->SetValue( m_selection + 1 ) ; } - // some page should be selected: either this one or the first one if there - // is still no selection - int selNew = wxNOT_FOUND; - if ( bSelect ) - selNew = nPage; - else if ( m_selection == wxNOT_FOUND ) - selNew = 0; - - if ( selNew != wxNOT_FOUND ) - SetSelection( selNew ); + DoSetSelectionAfterInsertion(nPage, bSelect); InvalidateBestSize(); return true; } -int wxNotebook::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(flags)) const +int wxNotebook::HitTest(const wxPoint& pt, long *flags) const { int resultV = wxNOT_FOUND; -#if 0 +#ifdef __WXOSX_CARBON__ const int countPages = GetPageCount(); // we have to convert from Client to Window relative coordinates @@ -270,32 +259,32 @@ int wxNotebook::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(flags)) con HIPoint hipoint= { adjustedPt.x , adjustedPt.y } ; HIViewPartCode outPart = 0 ; - OSStatus err = HIViewGetPartHit( m_peer->GetControlRef(), &hipoint, &outPart ); + OSStatus err = HIViewGetPartHit( GetPeer()->GetControlRef(), &hipoint, &outPart ); - int max = m_peer->GetMaximum() ; + int max = GetPeer()->GetMaximum() ; if ( outPart == 0 && max > 0 ) { // this is a hack, as unfortunately a hit on an already selected tab returns 0, // so we have to go some extra miles to make sure we select something different // and try again .. - int val = m_peer->GetValue() ; + int val = GetPeer()->GetValue() ; int maxval = max ; if ( max == 1 ) { - m_peer->SetMaximum( 2 ) ; + GetPeer()->SetMaximum( 2 ) ; maxval = 2 ; } if ( val == 1 ) - m_peer->SetValue( maxval ) ; + GetPeer()->SetValue( maxval ) ; else - m_peer->SetValue( 1 ) ; + GetPeer()->SetValue( 1 ) ; - err = HIViewGetPartHit( m_peer->GetControlRef(), &hipoint, &outPart ); + err = HIViewGetPartHit( GetPeer()->GetControlRef(), &hipoint, &outPart ); - m_peer->SetValue( val ) ; + GetPeer()->SetValue( val ) ; if ( max == 1 ) - m_peer->SetMaximum( 1 ) ; + GetPeer()->SetMaximum( 1 ) ; } if ( outPart >= 1 && outPart <= countPages ) @@ -311,6 +300,9 @@ int wxNotebook::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(flags)) con else *flags |= wxBK_HITTEST_NOWHERE; } +#else + wxUnusedVar(pt); + wxUnusedVar(flags); #endif return resultV; } @@ -322,7 +314,7 @@ int wxNotebook::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(flags)) con // void wxNotebook::MacSetupTabs() { - m_peer->SetupTabs(*this); + GetPeer()->SetupTabs(*this); Refresh(); } @@ -505,14 +497,14 @@ void wxNotebook::ChangePage(int nOldSel, int nSel) } m_selection = nSel; - m_peer->SetValue( m_selection + 1 ) ; + GetPeer()->SetValue( m_selection + 1 ) ; } bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) ) { bool status = false ; - SInt32 newSel = m_peer->GetValue() - 1 ; + SInt32 newSel = GetPeer()->GetValue() - 1 ; if ( newSel != m_selection ) { wxBookCtrlEvent changing( @@ -528,10 +520,12 @@ bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) ) newSel, m_selection ); event.SetEventObject( this ); HandleWindowEvent( event ); + + m_selection = newSel; } else { - m_peer->SetValue( m_selection + 1 ) ; + GetPeer()->SetValue( m_selection + 1 ) ; } status = true ;