X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/24a7a1980f309763c349541daffa46f1a5fd16b2..9398120d298d745763f253d87d774be3b134b43f:/include/wx/containr.h diff --git a/include/wx/containr.h b/include/wx/containr.h index 11a3dddf98..7139ef4242 100644 --- a/include/wx/containr.h +++ b/include/wx/containr.h @@ -39,14 +39,14 @@ class WXDLLEXPORT wxControlContainer { public: // ctors and such - wxControlContainer(wxWindow *winParent); + wxControlContainer(wxWindow *winParent = NULL); + void SetContainerWindow(wxWindow *winParent) { m_winParent = winParent; } + // default item access wxWindow *GetDefaultItem() const { return m_winDefault; } wxWindow *SetDefaultItem(wxWindow *win) { wxWindow *winOld = m_winDefault; m_winDefault = win; return winOld; } - void SetLastFocus(wxWindow *win); - // the methods to be called from the window event handlers void HandleOnNavigationKey(wxNavigationKeyEvent& event); void HandleOnFocus(wxFocusEvent& event); @@ -56,6 +56,10 @@ public: // the focus and the default processing should take place bool DoSetFocus(); + // called from OnChildFocus() handler, i.e. when one of our (grand) + // children gets the focus + void SetLastFocus(wxWindow *win); + protected: // set the focus to the child which had it the last time bool SetFocusToChild(); @@ -80,13 +84,17 @@ extern bool wxSetFocusToChild(wxWindow *win, wxWindow **child); // declare the methods to be forwarded #define WX_DECLARE_CONTROL_CONTAINER() \ +public: \ void OnNavigationKey(wxNavigationKeyEvent& event); \ void OnFocus(wxFocusEvent& event); \ virtual void OnChildFocus(wxChildFocusEvent& event); \ virtual void SetFocus(); \ virtual void RemoveChild(wxWindowBase *child); \ virtual wxWindow *GetDefaultItem() const; \ - virtual wxWindow *SetDefaultItem(wxWindow *child) \ + virtual wxWindow *SetDefaultItem(wxWindow *child); \ +\ +protected: \ + wxControlContainer m_container // implement the event table entries for wxControlContainer #define WX_EVENT_TABLE_CONTROL_CONTAINER(classname) \ @@ -95,43 +103,43 @@ extern bool wxSetFocusToChild(wxWindow *win, wxWindow **child); EVT_NAVIGATION_KEY(classname::OnNavigationKey) // implement the methods forwarding to the wxControlContainer -#define WX_DELEGATE_TO_CONTROL_CONTAINER(classname, container) \ +#define WX_DELEGATE_TO_CONTROL_CONTAINER(classname) \ wxWindow *classname::SetDefaultItem(wxWindow *child) \ { \ - return container->SetDefaultItem(child); \ + return m_container.SetDefaultItem(child); \ } \ \ wxWindow *classname::GetDefaultItem() const \ { \ - return container->GetDefaultItem(); \ + return m_container.GetDefaultItem(); \ } \ \ void classname::OnNavigationKey( wxNavigationKeyEvent& event ) \ { \ - container->HandleOnNavigationKey(event); \ + m_container.HandleOnNavigationKey(event); \ } \ \ void classname::RemoveChild(wxWindowBase *child) \ { \ - container->HandleOnWindowDestroy(child); \ + m_container.HandleOnWindowDestroy(child); \ \ wxWindow::RemoveChild(child); \ } \ \ void classname::SetFocus() \ { \ - if ( !container->DoSetFocus() ) \ + if ( !m_container.DoSetFocus() ) \ wxWindow::SetFocus(); \ } \ \ void classname::OnChildFocus(wxChildFocusEvent& event) \ { \ - container->SetLastFocus(event.GetWindow()); \ + m_container.SetLastFocus(event.GetWindow()); \ } \ \ void classname::OnFocus(wxFocusEvent& event) \ { \ - container->HandleOnFocus(event); \ + m_container.HandleOnFocus(event); \ }