]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/notebook_osx.cpp
Applied Blit system options optimization to StretchBlit
[wxWidgets.git] / src / osx / notebook_osx.cpp
index 110a36e9916afb6e8361326fb054ed6e76590da3..68ff2095b5ef8a765863f3b6d2545c667a727010 100644 (file)
@@ -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(
@@ -531,7 +523,7 @@ bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) )
         }
         else
         {
-            m_peer->SetValue( m_selection + 1 ) ;
+            GetPeer()->SetValue( m_selection + 1 ) ;
         }
 
         status = true ;