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:
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user