X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e53b3d16de127872e39bf276f7e616b32f161645..b99450eecb344b39cb8dc31e56d458e582a8eeba:/src/osx/notebook_osx.cpp?ds=sidebyside diff --git a/src/osx/notebook_osx.cpp b/src/osx/notebook_osx.cpp index 053c972bbe..95dfb988b4 100644 --- a/src/osx/notebook_osx.cpp +++ b/src/osx/notebook_osx.cpp @@ -82,7 +82,7 @@ bool wxNotebook::Create( wxWindow *parent, return false; m_peer = wxWidgetImpl::CreateTabView(this,parent, id, pos, size, style, GetExtraStyle() ); - + MacPostControlCreate( pos, size ); return true ; @@ -282,7 +282,7 @@ bool wxNotebook::InsertPage(size_t nPage, return true; } -int wxNotebook::HitTest(const wxPoint& pt, long * flags) const +int wxNotebook::HitTest(const wxPoint& WXUNUSED(pt), long * WXUNUSED(flags)) const { int resultV = wxNOT_FOUND; #if 0 @@ -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,15 +516,27 @@ 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; m_peer->SetValue( m_nSelection + 1 ) ; } -bool wxNotebook::HandleClicked( double timestampsec ) +bool wxNotebook::OSXHandleClicked( double WXUNUSED(timestampsec) ) { bool status = false ;