Refactor: use wxBookCtrlBase::m_selection in all derived classes.

All book control classes with the exception of wxGTK wxNotebook stored the
currently selected page in m_selection or m_nSelection (or, in wxUniv
wxNotebook case, m_sel) variable. Remove all of them and add m_selection
directly to the base class itself so that it can be reused everywhere.

Closes #12622.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-10-27 16:54:36 +00:00
parent 7e837615b9
commit 681be2ef80
22 changed files with 139 additions and 246 deletions

View File

@@ -40,32 +40,6 @@ END_EVENT_TABLE()
IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxBookCtrlBase)
// common part of all ctors
void wxNotebook::Init()
{
m_nSelection = -1;
}
// default for dynamic class
wxNotebook::wxNotebook()
{
Init();
}
// the same arguments as for wxControl
wxNotebook::wxNotebook( wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name )
{
Init();
Create( parent, id, pos, size, style, name );
}
bool wxNotebook::Create( wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
@@ -121,25 +95,25 @@ int wxNotebook::DoSetSelection(size_t nPage, int flags)
{
wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("DoSetSelection: invalid notebook page") );
if ( m_nSelection == wxNOT_FOUND || nPage != (size_t)m_nSelection )
if ( m_selection == wxNOT_FOUND || nPage != (size_t)m_selection )
{
if ( flags & SetSelection_SendEvent )
{
if ( !SendPageChangingEvent(nPage) )
{
// vetoed by program
return m_nSelection;
return m_selection;
}
//else: program allows the page change
SendPageChangedEvent(m_nSelection, nPage);
SendPageChangedEvent(m_selection, nPage);
}
ChangePage(m_nSelection, nPage);
ChangePage(m_selection, nPage);
}
//else: no change
return m_nSelection;
return m_selection;
}
bool wxNotebook::SetPageText(size_t nPage, const wxString& strText)
@@ -204,11 +178,11 @@ wxNotebookPage* wxNotebook::DoRemovePage(size_t nPage)
MacSetupTabs();
if (m_nSelection >= (int)GetPageCount())
m_nSelection = GetPageCount() - 1;
if (m_selection >= (int)GetPageCount())
m_selection = GetPageCount() - 1;
if (m_nSelection >= 0)
m_pages[m_nSelection]->Show(true);
if (m_selection >= 0)
m_pages[m_selection]->Show(true);
InvalidateBestSize();
@@ -220,7 +194,7 @@ bool wxNotebook::DeleteAllPages()
{
WX_CLEAR_ARRAY(m_pages) ;
MacSetupTabs();
m_nSelection = -1 ;
m_selection = wxNOT_FOUND ;
InvalidateBestSize();
return true;
@@ -258,12 +232,12 @@ bool wxNotebook::InsertPage(size_t nPage,
// if the inserted page is before the selected one, we must update the
// index of the selected page
if ( int(nPage) <= m_nSelection )
if ( int(nPage) <= m_selection )
{
m_nSelection++;
m_selection++;
// while this still is the same page showing, we need to update the tabs
m_peer->SetValue( m_nSelection + 1 ) ;
m_peer->SetValue( m_selection + 1 ) ;
}
// some page should be selected: either this one or the first one if there
@@ -271,7 +245,7 @@ bool wxNotebook::InsertPage(size_t nPage,
int selNew = wxNOT_FOUND;
if ( bSelect )
selNew = nPage;
else if ( m_nSelection == -1 )
else if ( m_selection == wxNOT_FOUND )
selNew = 0;
if ( selNew != wxNOT_FOUND )
@@ -380,9 +354,9 @@ void wxNotebook::OnSize(wxSizeEvent& event)
// has become visible for the first time after creation, and
// we postponed showing the page in ChangePage().
// So show the selected page now.
if ( m_nSelection != -1 )
if ( m_selection != wxNOT_FOUND )
{
wxNotebookPage *pPage = m_pages[m_nSelection];
wxNotebookPage *pPage = m_pages[m_selection];
if ( !pPage->IsShown() )
{
pPage->Show( true );
@@ -407,8 +381,8 @@ void wxNotebook::OnSelChange(wxBookCtrlEvent& event)
void wxNotebook::OnSetFocus(wxFocusEvent& event)
{
// set focus to the currently selected page if any
if ( m_nSelection != -1 )
m_pages[m_nSelection]->SetFocus();
if ( m_selection != wxNOT_FOUND )
m_pages[m_selection]->SetFocus();
event.Skip();
}
@@ -441,13 +415,13 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
if ( ((wxWindow*)event.GetEventObject()) == parent )
{
// no, it doesn't come from child, case (b): forward to a page
if ( m_nSelection != -1 )
if ( m_selection != wxNOT_FOUND )
{
// 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];
wxWindow *page = m_pages[m_selection];
if ( !page->HandleWindowEvent( event ) )
{
page->SetFocus();
@@ -530,8 +504,8 @@ void wxNotebook::ChangePage(int nOldSel, int nSel)
}
}
m_nSelection = nSel;
m_peer->SetValue( m_nSelection + 1 ) ;
m_selection = nSel;
m_peer->SetValue( m_selection + 1 ) ;
}
bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) )
@@ -539,11 +513,11 @@ bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) )
bool status = false ;
SInt32 newSel = m_peer->GetValue() - 1 ;
if ( newSel != m_nSelection )
if ( newSel != m_selection )
{
wxBookCtrlEvent changing(
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId,
newSel , m_nSelection );
newSel , m_selection );
changing.SetEventObject( this );
HandleWindowEvent( changing );
@@ -551,13 +525,13 @@ bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) )
{
wxBookCtrlEvent event(
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId,
newSel, m_nSelection );
newSel, m_selection );
event.SetEventObject( this );
HandleWindowEvent( event );
}
else
{
m_peer->SetValue( m_nSelection + 1 ) ;
m_peer->SetValue( m_selection + 1 ) ;
}
status = true ;