X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c33522fca7cddc441a316f5b9fb50d7685435ba..2c755d9bbf4c786a03cf6193c630fc986a69f802:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 2e1739de7e..831680858f 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -334,7 +334,7 @@ bool wxNotebook::Create(wxWindow *parent, } else { - wxLogLastError(_T("GetClassInfoEx(SysTabCtl32)")); + wxLogLastError(wxT("GetClassInfoEx(SysTabCtl32)")); } } @@ -418,14 +418,6 @@ WXDWORD wxNotebook::MSWGetStyle(long style, WXDWORD *exstyle) const else if ( style & wxBK_RIGHT ) tabStyle |= TCS_VERTICAL | TCS_RIGHT; - // ex style - if ( exstyle ) - { - // note that we never want to have the default WS_EX_CLIENTEDGE style - // as it looks too ugly for the notebooks - *exstyle = 0; - } - return tabStyle; } @@ -653,16 +645,18 @@ wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const tabSize.y = rect.bottom - rect.top; } + const int rows = GetRowCount(); + // add an extra margin in both directions const int MARGIN = 8; if ( IsVertical() ) { sizeTotal.x += MARGIN; - sizeTotal.y += tabSize.y + MARGIN; + sizeTotal.y += tabSize.y * rows + MARGIN; } else // horizontal layout { - sizeTotal.x += tabSize.x + MARGIN; + sizeTotal.x += tabSize.x * rows + MARGIN; sizeTotal.y += MARGIN; } @@ -671,7 +665,7 @@ wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const void wxNotebook::AdjustPageSize(wxNotebookPage *page) { - wxCHECK_RET( page, _T("NULL page in wxNotebook::AdjustPageSize") ); + wxCHECK_RET( page, wxT("NULL page in wxNotebook::AdjustPageSize") ); const wxRect r = GetPageSize(); if ( !r.IsEmpty() ) @@ -759,12 +753,12 @@ bool wxNotebook::InsertPage(size_t nPage, bool bSelect, int imageId) { - wxCHECK_MSG( pPage != NULL, false, _T("NULL page in wxNotebook::InsertPage") ); + wxCHECK_MSG( pPage != NULL, false, wxT("NULL page in wxNotebook::InsertPage") ); wxCHECK_MSG( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), false, - _T("invalid index in wxNotebook::InsertPage") ); + wxT("invalid index in wxNotebook::InsertPage") ); wxASSERT_MSG( pPage->GetParent() == this, - _T("notebook pages must have notebook as parent") ); + wxT("notebook pages must have notebook as parent") ); // add a new tab to the control // ---------------------------- @@ -1026,6 +1020,10 @@ void wxNotebook::OnSize(wxSizeEvent& event) MAKELPARAM(rc.right, rc.bottom)); s_isInOnSize = false; } + + // The best size depends on the number of rows of tabs, which can + // change when the notepad is resized. + InvalidateBestSize(); } #if wxUSE_UXTHEME @@ -1250,26 +1248,26 @@ void wxNotebook::UpdateBgBrush() } } -WXHBRUSH wxNotebook::MSWGetBgBrushForChild(WXHDC hDC, WXHWND hWnd) +WXHBRUSH wxNotebook::MSWGetBgBrushForChild(WXHDC hDC, wxWindow *child) { if ( m_hbrBackground ) { // before drawing with the background brush, we need to position it // correctly RECT rc; - ::GetWindowRect((HWND)hWnd, &rc); + ::GetWindowRect(GetHwndOf(child), &rc); ::MapWindowPoints(NULL, GetHwnd(), (POINT *)&rc, 1); if ( !::SetBrushOrgEx((HDC)hDC, -rc.left, -rc.top, NULL) ) { - wxLogLastError(_T("SetBrushOrgEx(notebook bg brush)")); + wxLogLastError(wxT("SetBrushOrgEx(notebook bg brush)")); } return m_hbrBackground; } - return wxNotebookBase::MSWGetBgBrushForChild(hDC, hWnd); + return wxNotebookBase::MSWGetBgBrushForChild(hDC, child); } bool wxNotebook::MSWPrintChild(WXHDC hDC, wxWindow *child)