diff --git a/tests/controls/listctrltest.cpp b/tests/controls/listctrltest.cpp index 61098bfdf9..b606b73f44 100644 --- a/tests/controls/listctrltest.cpp +++ b/tests/controls/listctrltest.cpp @@ -82,7 +82,7 @@ void ListCtrlTestCase::setUp() void ListCtrlTestCase::tearDown() { - delete m_list; + DeleteTestWindow(m_list); m_list = NULL; } diff --git a/tests/html/htmlwindow.cpp b/tests/html/htmlwindow.cpp index a1e8befd5e..af9cbb2e33 100644 --- a/tests/html/htmlwindow.cpp +++ b/tests/html/htmlwindow.cpp @@ -78,7 +78,8 @@ void HtmlWindowTestCase::setUp() void HtmlWindowTestCase::tearDown() { - wxDELETE(m_win); + DeleteTestWindow(m_win); + m_win = NULL; } // ---------------------------------------------------------------------------- diff --git a/tests/test.cpp b/tests/test.cpp index 85060d3cd4..87f23166c8 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -513,6 +513,25 @@ static Test *GetTestByName(const wxString& name) return test; } +#if wxUSE_GUI + +void DeleteTestWindow(wxWindow* win) +{ + if ( !win ) + return; + + wxWindow* const capture = wxWindow::GetCapture(); + if ( capture ) + { + if ( capture == win || + capture->GetMainWindowOfCompositeControl() == win ) + capture->ReleaseMouse(); + } + + delete win; +} + +#endif // wxUSE_GUI // ---------------------------------------------------------------------------- // TestApp diff --git a/tests/testprec.h b/tests/testprec.h index 530d5fca35..2c98096250 100644 --- a/tests/testprec.h +++ b/tests/testprec.h @@ -165,6 +165,14 @@ private: wxDECLARE_NO_COPY_CLASS(CLocaleSetter); }; +#if wxUSE_GUI + +// Helper function deleting the window without asserts (and hence exceptions +// thrown from its dtor!) even if it has mouse capture. +void DeleteTestWindow(wxWindow* win); + +#endif // wxUSE_GUI + // Macro that can be used to register the test with the given name in both the // global unnamed registry so that it is ran by default and a registry with the // same name as this test to allow running just this test individually.