]> git.saurik.com Git - wxWidgets.git/commitdiff
another attempt to fix wxPanel/wxFrame::m_winLastFocused handling
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 26 May 2001 22:20:33 +0000 (22:20 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 26 May 2001 22:20:33 +0000 (22:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/panelg.h
src/common/wincmn.cpp
src/generic/panelg.cpp

index eda2bd5abdd4366377b98f716329019f5bd00ae4..5d9f2a0f0a82b6740f298be350ab5532d0e766b8 100644 (file)
@@ -97,6 +97,8 @@ public:
     void SetLastFocus(wxWindow *win) { m_winLastFocused = win; }
     wxWindow *GetLastFocus() const { return m_winLastFocused; }
 
+    virtual void RemoveChild(wxWindowBase *child);
+
 protected:
     // common part of all ctors
     void Init();
index 95c51f5899b248dfd7e48b7757cf31c65fd15784..26eb1fb52532c97aa59e011937dc8ee2e33153d4 100644 (file)
@@ -225,16 +225,6 @@ wxWindowBase::~wxWindowBase()
 
     wxASSERT_MSG( GetChildren().GetCount() == 0, wxT("children not destroyed") );
 
-    // make sure that there are no dangling pointers left pointing to us
-    wxPanel *panel = wxDynamicCast(GetParent(), wxPanel);
-    if ( panel )
-    {
-        if ( panel->GetLastFocus() == this )
-        {
-            panel->SetLastFocus((wxWindow *)NULL);
-        }
-    }
-
 #if wxUSE_CARET
     if ( m_caret )
         delete m_caret;
index 3052aabd7b1786988a8f0378f32801659548ef50..7bded1cd15cd548c66a38cbd94ff13640afb8e15 100644 (file)
@@ -284,6 +284,13 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event )
     event.Skip();
 }
 
+void wxPanel::RemoveChild(wxWindowBase *child)
+{
+    if ( child == m_winLastFocused )
+        m_winLastFocused = NULL;
+    wxWindow::RemoveChild(child);
+}
+
 void wxPanel::SetFocus()
 {
     wxLogTrace(_T("focus"), _T("SetFocus on wxPanel 0x%08x."), GetHandle());