X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/85b43fbf7a512ea49cf491320c458bec705762ed..0b7824d78a475810924776e02004723cc4e20c84:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 25ff1ce8a6..c09e5fc085 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -32,6 +32,7 @@ #include "wx/event.h" #include "wx/control.h" #include "wx/notebook.h" +#include "wx/app.h" #include "wx/msw/private.h" @@ -156,12 +157,25 @@ bool wxNotebook::Create(wxWindow *parent, long style, const wxString& name) { - // base init + // Does ComCtl32 support non-top tabs? + int verComCtl32 = wxApp::GetComCtl32Version(); + if ( verComCtl32 < 470 || verComCtl32 >= 600 ) + { + if (style & wxNB_BOTTOM) + style &= ~wxNB_BOTTOM; + + if (style & wxNB_LEFT) + style &= ~wxNB_LEFT; + + if (style & wxNB_RIGHT) + style &= ~wxNB_RIGHT; + } + if ( !CreateControl(parent, id, pos, size, style | wxTAB_TRAVERSAL, wxDefaultValidator, name) ) return FALSE; - if ( !MSWCreateControl(WC_TABCONTROL, _T(""), pos, size) ) + if ( !MSWCreateControl(WC_TABCONTROL, wxEmptyString, pos, size) ) return FALSE; SetBackgroundColour(wxColour(::GetSysColor(COLOR_BTNFACE))); @@ -251,7 +265,7 @@ bool wxNotebook::SetPageText(int nPage, const wxString& strText) wxString wxNotebook::GetPageText(int nPage) const { - wxCHECK_MSG( IS_VALID_PAGE(nPage), wxT(""), wxT("notebook page out of range") ); + wxCHECK_MSG( IS_VALID_PAGE(nPage), wxEmptyString, wxT("notebook page out of range") ); wxChar buf[256]; TC_ITEM tcItem; @@ -547,25 +561,31 @@ bool wxNotebook::InsertPage(int nPage, return TRUE; } -// Hit test -int wxNotebook::HitTest(const wxPoint& pt, long& flags) +int wxNotebook::HitTest(const wxPoint& pt, long *flags) const { TC_HITTESTINFO hitTestInfo; hitTestInfo.pt.x = pt.x; hitTestInfo.pt.y = pt.y; - int item = TabCtrl_HitTest( (HWND) GetHWND(), & hitTestInfo ) ; - flags = 0; + int item = TabCtrl_HitTest(GetHwnd(), &hitTestInfo); - if ((hitTestInfo.flags & TCHT_NOWHERE) == TCHT_NOWHERE) - flags |= wxNB_HITTEST_NOWHERE; - if ((hitTestInfo.flags & TCHT_ONITEMICON) == TCHT_ONITEMICON) - flags |= wxNB_HITTEST_ONICON; - if ((hitTestInfo.flags & TCHT_ONITEMLABEL) == TCHT_ONITEMLABEL) - flags |= wxNB_HITTEST_ONLABEL; + if ( flags ) + { + *flags = 0; + + if ((hitTestInfo.flags & TCHT_NOWHERE) == TCHT_NOWHERE) + *flags |= wxNB_HITTEST_NOWHERE; + if ((hitTestInfo.flags & TCHT_ONITEM) == TCHT_ONITEM) + *flags |= wxNB_HITTEST_ONITEM; + if ((hitTestInfo.flags & TCHT_ONITEMICON) == TCHT_ONITEMICON) + *flags |= wxNB_HITTEST_ONICON; + if ((hitTestInfo.flags & TCHT_ONITEMLABEL) == TCHT_ONITEMLABEL) + *flags |= wxNB_HITTEST_ONLABEL; + } return item; } + // ---------------------------------------------------------------------------- // wxNotebook callbacks // ---------------------------------------------------------------------------- @@ -648,9 +668,9 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) // OnSetFocus() because we don't know which direction the focus came // from in this case and so can't choose between setting the focus to // first or last panel child - wxWindow *parent = GetParent(); - if ( event.GetEventObject() == parent ) + // the cast is here to fic a GCC ICE + if ( ((wxWindow*)event.GetEventObject()) == parent ) { // no, it doesn't come from child, case (b): forward to a page if ( m_nSelection != -1 ) @@ -802,7 +822,7 @@ void wxNotebook::ApplyThemeBackground(wxWindow* window, const wxColour& colour) window->SetBackgroundColour(colour); } - for ( wxWindowList::Node *node = window->GetChildren().GetFirst(); node; node = node->GetNext() ) + for ( wxWindowList::compatibility_iterator node = window->GetChildren().GetFirst(); node; node = node->GetNext() ) { wxWindow *child = node->GetData(); ApplyThemeBackground(child, colour);