From e417913f4676c8b4ae2104e23cdbdd2c945ee588 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 30 Nov 2015 04:03:18 +0100 Subject: [PATCH] Reset the wxDataViewItem being edited once it's not edited any more No real changes, just some cleanup to ensure that the item being edited stored in wxDataViewRendererBase never refers to an item which is not, actually, being edited any longer. --- include/wx/dvrenderers.h | 2 +- src/common/datavcmn.cpp | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/wx/dvrenderers.h b/include/wx/dvrenderers.h index a9c5156186..759461cddd 100644 --- a/include/wx/dvrenderers.h +++ b/include/wx/dvrenderers.h @@ -202,7 +202,7 @@ protected: wxString m_variantType; wxDataViewColumn *m_owner; wxWeakRef m_editorCtrl; - wxDataViewItem m_item; // for m_editorCtrl + wxDataViewItem m_item; // Item being currently edited, if valid. // internal utility, may be used anywhere the window associated with the // renderer is required diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index ce8c0530ff..6775d5fc53 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -681,8 +681,6 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la if( !start_event.IsAllowed() ) return false; - m_item = item; // remember for later - unsigned int col = GetOwner()->GetModelColumn(); const wxVariant& value = CheckedGetValue(dv_ctrl->GetModel(), item, col); @@ -708,6 +706,9 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la void wxDataViewRendererBase::NotifyEditingStarted(const wxDataViewItem& item) { + // Remember the item being edited for use in FinishEditing() later. + m_item = item; + wxDataViewColumn* const column = GetOwner(); wxDataViewCtrl* const dv_ctrl = column->GetOwner(); @@ -778,13 +779,16 @@ bool wxDataViewRendererBase::FinishEditing() event.SetEventObject( dv_ctrl ); dv_ctrl->GetEventHandler()->ProcessEvent( event ); + bool accepted = false; if ( isValid && event.IsAllowed() ) { dv_ctrl->GetModel()->ChangeValue(value, m_item, col); - return true; + accepted = true; } - return false; + m_item = wxDataViewItem(); + + return accepted; } wxVariant