unset the button as temporary default item when it's destroyed (closes bug 1354875)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-07-16 19:50:48 +00:00
parent cef55d6485
commit 789367e10d
3 changed files with 18 additions and 0 deletions

View File

@ -56,6 +56,10 @@ public:
// soon after a call to SetTmpDefaultItem(window)
void SetTmpDefaultItem(wxWindow *win) { m_winTmpDefault = win; }
// return the temporary default item, can be NULL
wxWindow *GetTmpDefaultItem() const { return m_winTmpDefault; }
// the methods to be called from the window event handlers
void HandleOnNavigationKey(wxNavigationKeyEvent& event);
void HandleOnFocus(wxFocusEvent& event);
@ -114,6 +118,7 @@ public: \
virtual wxWindow *GetDefaultItem() const; \
virtual wxWindow *SetDefaultItem(wxWindow *child); \
virtual void SetTmpDefaultItem(wxWindow *win); \
virtual wxWindow *GetTmpDefaultItem() const; \
virtual bool AcceptsFocus() const; \
\
protected: \
@ -142,6 +147,11 @@ wxWindow *classname::GetDefaultItem() const \
return m_container.GetDefaultItem(); \
} \
\
wxWindow *classname::GetTmpDefaultItem() const \
{ \
return m_container.GetTmpDefaultItem(); \
} \
\
void classname::OnNavigationKey( wxNavigationKeyEvent& event ) \
{ \
m_container.HandleOnNavigationKey(event); \

View File

@ -528,6 +528,9 @@ public:
// set this child as temporary default
virtual void SetTmpDefaultItem(wxWindow * WXUNUSED(win)) { }
// return the temporary default item, can be NULL
virtual wxWindow *GetTmpDefaultItem() const { return NULL; }
// navigates in the specified direction by sending a wxNavigationKeyEvent
virtual bool Navigate(int flags = wxNavigationKeyEvent::IsForward);

View File

@ -197,6 +197,11 @@ bool wxButton::Create(wxWindow *parent,
wxButton::~wxButton()
{
wxWindow *parent = GetParent();
if ( parent && parent->GetTmpDefaultItem() == this )
{
UnsetTmpDefault();
}
}
// ----------------------------------------------------------------------------