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:
parent
1aff4201c3
commit
5bdeabafbe
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user