X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/90f9b8ef0c83c09f80c2f60ad65407ba16f11a3c..d876667522bb46aefe877ca13e78d8c8f13c569b:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index e92244917a..b569568e7a 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -268,14 +268,21 @@ bool wxNotebook::Create(wxWindow *parent, long style, const wxString& name) { + if ( (style & wxBK_ALIGN_MASK) == wxBK_DEFAULT ) + { +#if defined(__POCKETPC__) + style |= wxBK_BOTTOM | wxNB_FLAT; +#else + style |= wxBK_TOP; +#endif + } + #ifdef __WXWINCE__ // Not sure why, but without this style, there is no border // around the notebook tabs. if (style & wxNB_FLAT) style |= wxBORDER_SUNKEN; #endif - if ( (style & wxBK_ALIGN_MASK) == wxBK_DEFAULT ) - style |= wxBK_TOP; #if !wxUSE_UXTHEME // ComCtl32 notebook tabs simply don't work unless they're on top if we have uxtheme, we can @@ -587,26 +594,29 @@ void wxNotebook::SetTabSize(const wxSize& sz) wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage) const { + // we can't use TabCtrl_AdjustRect here because it only works for wxNB_TOP wxSize sizeTotal = sizePage; - // We need to make getting tab size part of the wxWidgets API. wxSize tabSize; - if (GetPageCount() > 0) + if ( GetPageCount() > 0 ) { RECT rect; - TabCtrl_GetItemRect((HWND) GetHWND(), 0, & rect); + TabCtrl_GetItemRect(GetHwnd(), 0, &rect); tabSize.x = rect.right - rect.left; tabSize.y = rect.bottom - rect.top; } - if ( HasFlag(wxBK_LEFT) || HasFlag(wxBK_RIGHT) ) + + // add an extra margin in both directions + const int MARGIN = 8; + if ( IsVertical() ) { - sizeTotal.x += tabSize.x + 7; - sizeTotal.y += 7; + sizeTotal.x += MARGIN; + sizeTotal.y += tabSize.y + MARGIN; } - else + else // horizontal layout { - sizeTotal.x += 7; - sizeTotal.y += tabSize.y + 7; + sizeTotal.x += tabSize.x + MARGIN; + sizeTotal.y += MARGIN; } return sizeTotal; @@ -811,6 +821,8 @@ int wxNotebook::HitTest(const wxPoint& pt, long *flags) const *flags |= wxNB_HITTEST_ONICON; if ((hitTestInfo.flags & TCHT_ONITEMLABEL) == TCHT_ONITEMLABEL) *flags |= wxNB_HITTEST_ONLABEL; + if ( item == wxNOT_FOUND && GetPageSize().Inside(pt) ) + *flags |= wxNB_HITTEST_ONPAGE; } return item;