+int wxNotebook::HitTest(const wxPoint& pt, long * flags) const
+{
+ int resultV = wxNOT_FOUND;
+#if TARGET_API_MAC_OSX
+ const int countPages = GetPageCount();
+
+ HIPoint hipoint= { pt.x , pt.y } ;
+ HIViewPartCode outPart = 0 ;
+ OSStatus err = HIViewGetPartHit (
+ m_peer->GetControlRef() ,
+ &hipoint ,
+ &outPart
+ );
+
+ int max = m_peer->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 maxval = max ;
+ if ( max == 1 )
+ {
+ m_peer->SetMaximum( 2 ) ;
+ maxval = 2 ;
+ }
+
+ if ( val == 1 )
+ m_peer->SetValue( maxval ) ;
+ else
+ m_peer->SetValue( 1 ) ;
+
+ err = HIViewGetPartHit (
+ m_peer->GetControlRef() ,
+ &hipoint ,
+ &outPart
+ );
+
+ m_peer->SetValue( val ) ;
+ if ( max == 1 )
+ {
+ m_peer->SetMaximum( 1 ) ;
+ }
+ }
+
+ if ( outPart >= 1 && outPart <= countPages )
+ {
+ resultV = outPart ;
+ }
+#endif // TARGET_API_MAC_OSX
+
+ if (flags != NULL)
+ {
+ *flags = 0;
+
+ // we cannot differentiate better
+ if (resultV >= 1)
+ *flags |= wxNB_HITTEST_ONLABEL;
+ else
+ *flags |= wxNB_HITTEST_NOWHERE;
+ }
+ return resultV;
+}
+