Add wxDataViewEvent::IsEditCancelled() and support for vetoing edit events.

Currently this is only implemented in the generic wxDataViewCtrl, the native
GTK/OSX ports should be modified to support this later.

Closes #13323.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-07-19 22:35:53 +00:00
parent d32fb5f9f4
commit 2a648479df
4 changed files with 41 additions and 7 deletions

View File

@@ -763,21 +763,27 @@ bool wxDataViewRendererBase::FinishEditing()
DestroyEditControl();
if (!Validate(value))
return false;
bool isValid = Validate(value);
unsigned int col = GetOwner()->GetModelColumn();
dv_ctrl->GetModel()->ChangeValue(value, m_item, col);
// Now we should send Editing Done event
wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, dv_ctrl->GetId() );
event.SetDataViewColumn( GetOwner() );
event.SetModel( dv_ctrl->GetModel() );
event.SetItem( m_item );
event.SetValue( value );
event.SetColumn( col );
event.SetEditCanceled( !isValid );
event.SetEventObject( dv_ctrl );
dv_ctrl->GetEventHandler()->ProcessEvent( event );
return true;
if ( isValid && event.IsAllowed() )
{
dv_ctrl->GetModel()->ChangeValue(value, m_item, col);
return true;
}
return false;
}
void wxDataViewRendererBase::PrepareForItem(const wxDataViewModel *model,