yet another attempt to fix LastFocus bug in wxFrame
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
86f65864f9
commit
4a41c655e8
@ -61,8 +61,6 @@ public:
|
||||
// override some more virtuals
|
||||
virtual bool Show(bool show = TRUE);
|
||||
|
||||
virtual void RemoveChild( wxWindowBase *child );
|
||||
|
||||
// event handlers
|
||||
void OnActivate(wxActivateEvent& event);
|
||||
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
||||
@ -118,6 +116,10 @@ public:
|
||||
// current size - this has an effect of refreshing the window layout
|
||||
void SendSizeEvent();
|
||||
|
||||
// called by wxWindow whenever it gets focus
|
||||
void SetLastFocus(wxWindow *win) { m_winLastFocused = win; }
|
||||
wxWindow *GetLastFocus() const { return m_winLastFocused; }
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
@ -799,13 +799,6 @@ void wxFrame::OnActivate(wxActivateEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void wxFrame::RemoveChild( wxWindowBase *child )
|
||||
{
|
||||
if ( child == m_winLastFocused )
|
||||
m_winLastFocused = NULL;
|
||||
wxFrameBase::RemoveChild(child);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// tool/status bar stuff
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -288,6 +288,18 @@ wxWindow::~wxWindow()
|
||||
m_isBeingDeleted = TRUE;
|
||||
|
||||
MSWDetachWindowMenu();
|
||||
|
||||
// VS: make sure there's no wxFrame with last focus set to us:
|
||||
for (wxWindow *win = GetParent(); win; win = win->GetParent())
|
||||
{
|
||||
wxFrame *frame = wxDynamicCast(win, wxFrame);
|
||||
if ( frame )
|
||||
{
|
||||
if ( frame->GetLastFocus() == this )
|
||||
frame->SetLastFocus((wxWindow*)NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_parent )
|
||||
m_parent->RemoveChild(this);
|
||||
|
Loading…
Reference in New Issue
Block a user