switching notebook implementation to common

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2013-02-17 14:54:43 +00:00
parent 2a45803fc3
commit dfd0756f75
4 changed files with 122 additions and 171 deletions

View File

@@ -247,64 +247,7 @@ bool wxNotebook::InsertPage(size_t nPage,
int wxNotebook::HitTest(const wxPoint& pt, long *flags) const
{
int resultV = wxNOT_FOUND;
#ifdef __WXOSX_CARBON__
const int countPages = GetPageCount();
// we have to convert from Client to Window relative coordinates
wxPoint adjustedPt = pt + GetClientAreaOrigin();
// and now to HIView native ones
adjustedPt.x -= MacGetLeftBorderSize() ;
adjustedPt.y -= MacGetTopBorderSize() ;
HIPoint hipoint= { adjustedPt.x , adjustedPt.y } ;
HIViewPartCode outPart = 0 ;
OSStatus err = HIViewGetPartHit( GetPeer()->GetControlRef(), &hipoint, &outPart );
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 = GetPeer()->GetValue() ;
int maxval = max ;
if ( max == 1 )
{
GetPeer()->SetMaximum( 2 ) ;
maxval = 2 ;
}
if ( val == 1 )
GetPeer()->SetValue( maxval ) ;
else
GetPeer()->SetValue( 1 ) ;
err = HIViewGetPartHit( GetPeer()->GetControlRef(), &hipoint, &outPart );
GetPeer()->SetValue( val ) ;
if ( max == 1 )
GetPeer()->SetMaximum( 1 ) ;
}
if ( outPart >= 1 && outPart <= countPages )
resultV = outPart - 1 ;
if (flags != NULL)
{
*flags = 0;
// we cannot differentiate better
if (resultV >= 0)
*flags |= wxBK_HITTEST_ONLABEL;
else
*flags |= wxBK_HITTEST_NOWHERE;
}
#else
wxUnusedVar(pt);
wxUnusedVar(flags);
#endif
return resultV;
return GetPeer()->TabHitTest(pt,flags);
}
// Added by Mark Newsam