-
- m_peer->SetTabEnabled( ii + 1, true ) ;
- }
-
- Refresh();
-}
-
-wxRect wxNotebook::GetPageRect() const
-{
- wxSize size = GetClientSize() ;
-
- return wxRect( 0 , 0 , size.x , size.y ) ;
-}
-
-// ----------------------------------------------------------------------------
-// wxNotebook callbacks
-// ----------------------------------------------------------------------------
-
-// @@@ OnSize() is used for setting the font when it's called for the first
-// time because doing it in ::Create() doesn't work (for unknown reasons)
-void wxNotebook::OnSize(wxSizeEvent& event)
-{
- unsigned int nCount = m_pages.Count();
- wxRect rect = GetPageRect() ;
-
- for ( unsigned int nPage = 0; nPage < nCount; nPage++ )
- {
- wxNotebookPage *pPage = m_pages[nPage];
- pPage->SetSize(rect);
- if ( pPage->GetAutoLayout() )
- pPage->Layout();
- }
-
- // Processing continues to next OnSize
- event.Skip();
-}
-
-void wxNotebook::OnSelChange(wxBookCtrlEvent& event)
-{
- // is it our tab control?
- if ( event.GetEventObject() == this )
- ChangePage(event.GetOldSelection(), event.GetSelection());
-
- // we want to give others a chance to process this message as well
- event.Skip();
-}
-
-void wxNotebook::OnSetFocus(wxFocusEvent& event)
-{
- // set focus to the currently selected page if any
- if ( m_nSelection != -1 )
- m_pages[m_nSelection]->SetFocus();
-
- event.Skip();
-}
-
-void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
-{
- if ( event.IsWindowChange() )
- {
- // change pages
- AdvanceSelection( event.GetDirection() );
- }
- else
- {
- // we get this event in 2 cases
- //
- // a) one of our pages might have generated it because the user TABbed
- // out from it in which case we should propagate the event upwards and
- // our parent will take care of setting the focus to prev/next sibling
- //
- // or
- //
- // b) the parent panel wants to give the focus to us so that we
- // forward it to our selected page. We can't deal with this in
- // OnSetFocus() because we don't know which direction the focus came
- // from in this case and so can't choose between setting the focus to
- // first or last panel child
- wxWindow *parent = GetParent();
-
- // the cast is here to fix a GCC ICE
- if ( ((wxWindow*)event.GetEventObject()) == parent )
- {
- // no, it doesn't come from child, case (b): forward to a page
- if ( m_nSelection != -1 )
- {
- // so that the page knows that the event comes from it's parent
- // and is being propagated downwards
- event.SetEventObject( this );
-
- wxWindow *page = m_pages[m_nSelection];
- if ( !page->HandleWindowEvent( event ) )
- {
- page->SetFocus();
- }
- //else: page manages focus inside it itself
- }
- else
- {
- // we have no pages - still have to give focus to _something_
- SetFocus();
- }
- }
- else
- {
- // it comes from our child, case (a), pass to the parent
- if ( parent )
- {
- event.SetCurrentFocus( this );
- parent->HandleWindowEvent( event );
- }
- }