Postpone showing the notebook pages under wxOSX/Cocoa.

Showing the selected notebook page immediately when it's selected can result
in the top level parent of the notebook being shown prematurely, so don't do
this until the notebook itself is shown.

Closes #12227.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65078 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-07-24 12:27:29 +00:00
parent 1aff4201c3
commit 5bdeabafbe

View File

@ -378,6 +378,20 @@ void wxNotebook::OnSize(wxSizeEvent& event)
pPage->Layout();
}
// 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().
// So show the selected page now.
if ( m_nSelection != -1 )
{
wxNotebookPage *pPage = m_pages[m_nSelection];
if ( !pPage->IsShown() )
{
pPage->Show( true );
pPage->SetFocus();
}
}
// Processing continues to next OnSize
event.Skip();
}
@ -502,8 +516,20 @@ void wxNotebook::ChangePage(int nOldSel, int nSel)
if ( nSel != -1 )
{
wxNotebookPage *pPage = m_pages[nSel];
pPage->Show( true );
pPage->SetFocus();
if ( IsShownOnScreen() )
{
pPage->Show( true );
pPage->SetFocus();
}
else
{
// Postpone Show() until the control is actually shown.
// Otherwise this forces the containing toplevel window
// to show, even if it's just being created and called
// AddPage() without intent to show the window yet.
// We Show() the selected page in our OnSize handler,
// unless it already is shown.
}
}
m_nSelection = nSel;