X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03647350fc7cd141953c72e0284e928847d30f44..a323f63a8df1f285efba29e4be28e6bde3f6d4ff:/src/osx/notebook_osx.cpp diff --git a/src/osx/notebook_osx.cpp b/src/osx/notebook_osx.cpp index dad2a6c5c4..57e034bc6f 100644 --- a/src/osx/notebook_osx.cpp +++ b/src/osx/notebook_osx.cpp @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: notebmac.cpp 55079 2008-08-13 14:56:42Z PC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -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;