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