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 );
{
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] )
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
- 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( 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 - 1 ;
-
- if (flags != NULL)
- {
- *flags = 0;
-
- // we cannot differentiate better
- if (resultV >= 0)
- *flags |= wxBK_HITTEST_ONLABEL;
- else
- *flags |= wxBK_HITTEST_NOWHERE;
- }
-#endif
- return resultV;
+ return GetPeer()->TabHitTest(pt,flags);
}
// Added by Mark Newsam
//
void wxNotebook::MacSetupTabs()
{
- m_peer->SetupTabs(*this);
+ GetPeer()->SetupTabs(*this);
Refresh();
}
pPage->SetSize(rect, wxSIZE_FORCE_EVENT);
}
+#if 0 // deactivate r65078 for the moment
// If the selected page is hidden at this point, the notebook
// has become visible for the first time after creation, and
// we postponed showing the page in ChangePage().
pPage->SetFocus();
}
}
+#endif
// Processing continues to next OnSize
event.Skip();
if ( nSel != wxNOT_FOUND )
{
wxNotebookPage *pPage = m_pages[nSel];
+#if 0 // deactivate r65078 for the moment
if ( IsShownOnScreen() )
{
pPage->Show( true );
// We Show() the selected page in our OnSize handler,
// unless it already is shown.
}
+#else
+ pPage->Show( true );
+ pPage->SetFocus();
+#endif
}
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(
- wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId,
+ wxEVT_NOTEBOOK_PAGE_CHANGING, m_windowId,
newSel , m_selection );
changing.SetEventObject( this );
HandleWindowEvent( changing );
if ( changing.IsAllowed() )
{
wxBookCtrlEvent event(
- wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId,
+ wxEVT_NOTEBOOK_PAGE_CHANGED, m_windowId,
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 ;