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.
This commit is contained in:
@@ -202,7 +202,7 @@ protected:
|
|||||||
wxString m_variantType;
|
wxString m_variantType;
|
||||||
wxDataViewColumn *m_owner;
|
wxDataViewColumn *m_owner;
|
||||||
wxWeakRef<wxWindow> m_editorCtrl;
|
wxWeakRef<wxWindow> 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
|
// internal utility, may be used anywhere the window associated with the
|
||||||
// renderer is required
|
// renderer is required
|
||||||
|
@@ -681,8 +681,6 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la
|
|||||||
if( !start_event.IsAllowed() )
|
if( !start_event.IsAllowed() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_item = item; // remember for later
|
|
||||||
|
|
||||||
unsigned int col = GetOwner()->GetModelColumn();
|
unsigned int col = GetOwner()->GetModelColumn();
|
||||||
const wxVariant& value = CheckedGetValue(dv_ctrl->GetModel(), item, col);
|
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)
|
void wxDataViewRendererBase::NotifyEditingStarted(const wxDataViewItem& item)
|
||||||
{
|
{
|
||||||
|
// Remember the item being edited for use in FinishEditing() later.
|
||||||
|
m_item = item;
|
||||||
|
|
||||||
wxDataViewColumn* const column = GetOwner();
|
wxDataViewColumn* const column = GetOwner();
|
||||||
wxDataViewCtrl* const dv_ctrl = column->GetOwner();
|
wxDataViewCtrl* const dv_ctrl = column->GetOwner();
|
||||||
|
|
||||||
@@ -778,13 +779,16 @@ bool wxDataViewRendererBase::FinishEditing()
|
|||||||
event.SetEventObject( dv_ctrl );
|
event.SetEventObject( dv_ctrl );
|
||||||
dv_ctrl->GetEventHandler()->ProcessEvent( event );
|
dv_ctrl->GetEventHandler()->ProcessEvent( event );
|
||||||
|
|
||||||
|
bool accepted = false;
|
||||||
if ( isValid && event.IsAllowed() )
|
if ( isValid && event.IsAllowed() )
|
||||||
{
|
{
|
||||||
dv_ctrl->GetModel()->ChangeValue(value, m_item, col);
|
dv_ctrl->GetModel()->ChangeValue(value, m_item, col);
|
||||||
return true;
|
accepted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
m_item = wxDataViewItem();
|
||||||
|
|
||||||
|
return accepted;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxVariant
|
wxVariant
|
||||||
|
Reference in New Issue
Block a user