From: Jaakko Salli Date: Tue, 17 Feb 2009 18:01:06 +0000 (+0000) Subject: Clear grid selection more consistently prior clear operations; improved Clear() tests... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/8dee26e1070f431f22963e41e030b14a4f9a709a Clear grid selection more consistently prior clear operations; improved Clear() tests (fixes #10497) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/propgrid/tests.cpp b/samples/propgrid/tests.cpp index 7a8cc656f3..d12a7bb22a 100644 --- a/samples/propgrid/tests.cpp +++ b/samples/propgrid/tests.cpp @@ -1005,12 +1005,29 @@ bool FormMain::RunTests( bool fullTest, bool interactive ) } { - RT_START_TEST(ManagerClear) + RT_START_TEST(Clear) + + // Manager clear + pgman->SelectProperty("Label"); pgman->Clear(); if ( pgman->GetPageCount() ) RT_FAILURE(); + if ( pgman->GetGrid()->GetRoot()->GetChildCount() ) + RT_FAILURE(); + + // Recreate the original grid + CreateGrid( -1, -1 ); + pgman = m_pPropGridManager; + + // Grid clear + pgman->SelectProperty("Label"); + pgman->GetGrid()->Clear(); + + if ( pgman->GetGrid()->GetRoot()->GetChildCount() ) + RT_FAILURE(); + // Recreate the original grid CreateGrid( -1, -1 ); pgman = m_pPropGridManager; diff --git a/src/propgrid/manager.cpp b/src/propgrid/manager.cpp index f4052c044f..096228ac54 100644 --- a/src/propgrid/manager.cpp +++ b/src/propgrid/manager.cpp @@ -657,6 +657,8 @@ wxPropertyGridPageState* wxPropertyGridManager::GetPageState( int page ) const void wxPropertyGridManager::Clear() { + m_pPropGrid->ClearSelection(false); + m_pPropGrid->Freeze(); int i; diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 8a3606fda4..dde158f95b 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -2114,8 +2114,6 @@ void wxPropertyGrid::Refresh( bool WXUNUSED(eraseBackground), void wxPropertyGrid::Clear() { - ClearSelection(false); - m_pState->DoClear(); m_propHover = NULL; diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index ed24230a42..a0aeef7788 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -268,6 +268,15 @@ void wxPropertyGridPageState::InitNonCatMode() void wxPropertyGridPageState::DoClear() { + if ( m_pPropGrid->GetState() == this ) + { + m_pPropGrid->ClearSelection(false); + } + else + { + m_selected = NULL; + } + m_regularArray.Empty(); if ( m_abcArray ) m_abcArray->Empty(); @@ -280,8 +289,6 @@ void wxPropertyGridPageState::DoClear() m_virtualHeight = 0; m_vhCalcPending = 0; - - m_selected = NULL; } // -----------------------------------------------------------------------