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
+ // 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();
}
// Processing continues to next OnSize
event.Skip();
}
if ( nSel != -1 )
{
wxNotebookPage *pPage = m_pages[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.
+ }