From: Julian Smart Date: Sun, 1 Jun 2003 13:26:09 +0000 (+0000) Subject: Applied patch [ 743194 ] HitTest for wxNotebook X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/17816c2e708ff60503dc84ab98bc99a9446258e4?ds=inline Applied patch [ 743194 ] HitTest for wxNotebook Yes, we do need implementations for other platforms, but it's a start. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/notebook.h b/include/wx/msw/notebook.h index a2e6f84183..f515dada98 100644 --- a/include/wx/msw/notebook.h +++ b/include/wx/msw/notebook.h @@ -27,6 +27,15 @@ // wxNotebook // ---------------------------------------------------------------------------- +/* + * Flags returned by HitTest + */ + +#define wxNB_HITTEST_NOWHERE 1 +#define wxNB_HITTEST_ONICON 2 +#define wxNB_HITTEST_ONLABEL 4 +#define wxNB_HITTEST_ONITEM 6 + class WXDLLEXPORT wxNotebook : public wxNotebookBase { public: @@ -103,6 +112,9 @@ public: // style. void SetTabSize(const wxSize& sz); + + // Hit test + int HitTest(const wxPoint& pt, long& flags); // calculate the size of the notebook from the size of its page virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const; diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 7c3ceddae1..7ee5b2337a 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -468,6 +468,25 @@ bool wxNotebook::InsertPage(int nPage, // finally do insert it if ( TabCtrl_InsertItem(m_hwnd, nPage, &tcItem) == -1 ) { +// Hit test +int wxNotebook::HitTest(const wxPoint& pt, long& flags) +{ + TC_HITTESTINFO hitTestInfo; + hitTestInfo.pt.x = pt.x; + hitTestInfo.pt.y = pt.y; + int item = TabCtrl_HitTest( (HWND) GetHWND(), & hitTestInfo ) ; + flags = 0; + + 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; + + return item; +} + wxLogError(wxT("Can't create the notebook page '%s'."), strText.c_str()); return FALSE;