#if wxUSE_NOTEBOOK
-#include "wx/app.h"
+#include "wx/notebook.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/string.h"
+ #include "wx/log.h"
+ #include "wx/app.h"
+ #include "wx/image.h"
+#endif
+
#include "wx/string.h"
-#include "wx/log.h"
#include "wx/imaglist.h"
-#include "wx/image.h"
-#include "wx/notebook.h"
#include "wx/mac/uma.h"
{
m_macIsUserPane = false ;
+ if (! (style & wxBK_ALIGN_MASK))
+ style |= wxBK_TOP;
+
if ( !wxNotebookBase::Create( parent, id, pos, size, style, name ) )
return false;
ControlTabSize tabsize;
switch (GetWindowVariant())
{
- case wxWINDOW_VARIANT_MINI:
- if ( UMAGetSystemVersion() >= 0x1030 )
- tabsize = 3 ;
- else
- tabsize = kControlSizeSmall;
+ case wxWINDOW_VARIANT_MINI:
+ tabsize = 3 ;
break;
- case wxWINDOW_VARIANT_SMALL:
+ case wxWINDOW_VARIANT_SMALL:
tabsize = kControlTabSizeSmall;
break;
- default:
+ default:
tabsize = kControlTabSizeLarge;
break;
}
// wxNotebook accessors
// ----------------------------------------------------------------------------
-void wxNotebook::SetPadding(const wxSize& padding)
+void wxNotebook::SetPadding(const wxSize& WXUNUSED(padding))
{
// unsupported by OS
}
-void wxNotebook::SetTabSize(const wxSize& sz)
+void wxNotebook::SetTabSize(const wxSize& WXUNUSED(sz))
{
// unsupported by OS
}
return DoGetSizeFromClientSize( sizePage );
}
-int wxNotebook::SetSelection(size_t nPage)
+int wxNotebook::DoSetSelection(size_t nPage, int flags)
{
- wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("SetSelection: invalid notebook page") );
+ wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("DoSetSelection: invalid notebook page") );
- if ( int(nPage) != m_nSelection )
+ if ( m_nSelection == wxNOT_FOUND || nPage != (size_t)m_nSelection )
{
- wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId);
- event.SetSelection(nPage);
- event.SetOldSelection(m_nSelection);
- event.SetEventObject(this);
- if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() )
+ if ( flags & SetSelection_SendEvent )
{
- // program allows the page change
- event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED);
- (void)GetEventHandler()->ProcessEvent(event);
+ if ( !SendPageChangingEvent(nPage) )
+ {
+ // vetoed by program
+ return m_nSelection;
+ }
+ //else: program allows the page change
- ChangePage(m_nSelection, nPage);
+ SendPageChangedEvent(m_nSelection, nPage);
}
+
+ ChangePage(m_nSelection, nPage);
}
+ //else: no change
return m_nSelection;
}
{
int resultV = wxNOT_FOUND;
-#if TARGET_API_MAC_OSX
const int countPages = GetPageCount();
- HIPoint hipoint = { pt.x , pt.y } ;
+ // 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( m_peer->GetControlRef(), &hipoint, &outPart );
}
if ( outPart >= 1 && outPart <= countPages )
- resultV = outPart ;
-#endif // TARGET_API_MAC_OSX
+ resultV = outPart - 1 ;
if (flags != NULL)
{
*flags = 0;
// we cannot differentiate better
- if (resultV >= 1)
- *flags |= wxNB_HITTEST_ONLABEL;
+ if (resultV >= 0)
+ *flags |= wxBK_HITTEST_ONLABEL;
else
- *flags |= wxNB_HITTEST_NOWHERE;
+ *flags |= wxBK_HITTEST_NOWHERE;
}
return resultV;
info.name = cflabel ;
m_peer->SetData<ControlTabInfoRecV1>( ii + 1, kControlTabInfoTag, &info ) ;
- if ( GetImageList() && GetPageImage(ii) >= 0 && UMAGetSystemVersion() >= 0x1020 )
+ if ( GetImageList() && GetPageImage(ii) >= 0 )
{
const wxBitmap bmap = GetImageList()->GetBitmap( GetPageImage( ii ) ) ;
if ( bmap.Ok() )
m_peer->SetTabEnabled( ii + 1, true ) ;
}
- Rect bounds;
- m_peer->GetRectInWindowCoords( &bounds ) ;
- InvalWindowRect( (WindowRef)MacGetTopLevelWindowRef(), &bounds );
+ Refresh();
}
wxRect wxNotebook::GetPageRect() const
#endif // wxUSE_CONSTRAINTS
-void wxNotebook::Command(wxCommandEvent& event)
+void wxNotebook::Command(wxCommandEvent& WXUNUSED(event))
{
wxFAIL_MSG(wxT("wxNotebook::Command not implemented"));
}