X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/223d09f6b523aac674ef9b72a883dfa8d37c5d4e..37b8e6798782278fdfe4f3c1291aaff55cdbb8c9:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index ef0944b4af..185a915c58 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -22,16 +22,16 @@ // wxWindows #ifndef WX_PRECOMP - #include + #include "wx/string.h" #endif // WX_PRECOMP -#include -#include -#include -#include -#include +#include "wx/log.h" +#include "wx/imaglist.h" +#include "wx/event.h" +#include "wx/control.h" +#include "wx/notebook.h" -#include +#include "wx/msw/private.h" // Windows standard headers #ifndef __WIN95__ @@ -83,8 +83,7 @@ // event table // ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARIES - BEGIN_EVENT_TABLE(wxNotebook, wxControl) +BEGIN_EVENT_TABLE(wxNotebook, wxControl) EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) EVT_SIZE(wxNotebook::OnSize) @@ -92,11 +91,10 @@ EVT_SET_FOCUS(wxNotebook::OnSetFocus) EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) - END_EVENT_TABLE() +END_EVENT_TABLE() - IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) - IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) -#endif +IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) // ============================================================================ // implementation @@ -167,7 +165,7 @@ bool wxNotebook::Create(wxWindow *parent, tabStyle |= TCS_VERTICAL; if (m_windowStyle & wxNB_RIGHT) tabStyle |= TCS_VERTICAL|TCS_RIGHT; - + if ( !MSWCreate(GetId(), GetParent(), WC_TABCONTROL, this, NULL, pos.x, pos.y, size.x, size.y, @@ -316,6 +314,9 @@ bool wxNotebook::DeletePage(int nPage) // no selection if the notebook became empty m_nSelection = -1; } + else + m_nSelection = TabCtrl_GetCurSel(m_hwnd); + return TRUE; } @@ -329,6 +330,11 @@ bool wxNotebook::RemovePage(int nPage) m_aPages.Remove(nPage); + if ( m_aPages.IsEmpty() ) + m_nSelection = -1; + else + m_nSelection = TabCtrl_GetCurSel(m_hwnd); + return TRUE; } @@ -344,6 +350,8 @@ bool wxNotebook::DeleteAllPages() TabCtrl_DeleteAllItems(m_hwnd); + m_nSelection = -1; + return TRUE; } @@ -408,6 +416,14 @@ bool wxNotebook::InsertPage(int nPage, // this updates internal flag too - otherwise it will get out of sync pPage->Show(FALSE); + // fit the notebook page to the tab control's display area + RECT rc; + rc.left = rc.top = 0; + GetSize((int *)&rc.right, (int *)&rc.bottom); + TabCtrl_AdjustRect(m_hwnd, FALSE, &rc); + pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); + + // some page should be selected: either this one or the first one if there is // still no selection int selNew = -1; @@ -438,8 +454,6 @@ void wxNotebook::OnSize(wxSizeEvent& event) for ( size_t nPage = 0; nPage < nCount; nPage++ ) { wxNotebookPage *pPage = m_aPages[nPage]; pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); } event.Skip(); @@ -453,7 +467,7 @@ void wxNotebook::OnSelChange(wxNotebookEvent& event) int sel = event.GetOldSelection(); if ( sel != -1 ) m_aPages[sel]->Show(FALSE); - + sel = event.GetSelection(); if ( sel != -1 ) { @@ -461,7 +475,7 @@ void wxNotebook::OnSelChange(wxNotebookEvent& event) pPage->Show(TRUE); pPage->SetFocus(); } - + m_nSelection = sel; }