- Support float, double and file name values in wxGenericValidator (troelsk).
- Fix keyboard navigation in wxGrid with hidden columns (ivan_14_32).
+- Add wxDataViewEvent::IsEditCancelled() (Allonii).
OSX:
m_column(NULL),
m_pos(-1,-1),
m_cacheFrom(0),
- m_cacheTo(0)
+ m_cacheTo(0),
+ m_editCancelled(false)
#if wxUSE_DRAG_AND_DROP
, m_dataObject(NULL),
m_dataBuffer(NULL),
m_column(event.m_column),
m_pos(event.m_pos),
m_cacheFrom(event.m_cacheFrom),
- m_cacheTo(event.m_cacheTo)
+ m_cacheTo(event.m_cacheTo),
+ m_editCancelled(event.m_editCancelled)
#if wxUSE_DRAG_AND_DROP
, m_dataObject(event.m_dataObject),
m_dataFormat(event.m_dataFormat),
const wxVariant &GetValue() const { return m_value; }
void SetValue( const wxVariant &value ) { m_value = value; }
+ // for wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE only
+ bool IsEditCancelled() const { return m_editCancelled; }
+ void SetEditCanceled(bool editCancelled) { m_editCancelled = editCancelled; }
+
// for wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only
void SetDataViewColumn( wxDataViewColumn *col ) { m_column = col; }
wxDataViewColumn *GetDataViewColumn() const { return m_column; }
wxPoint m_pos;
int m_cacheFrom;
int m_cacheTo;
+ bool m_editCancelled;
#if wxUSE_DRAG_AND_DROP
wxDataObject *m_dataObject;
*/
const wxVariant& GetValue() const;
+ /**
+ Can be used to determine whether the new value is going to be accepted
+ in wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE handler.
+
+ Returns @true if editing the item was cancelled or if the user tried to
+ enter an invalid value (refused by wxDataViewRenderer::Validate()). If
+ this method returns @false, it means that the value in the model is
+ about to be changed to the new one.
+
+ Notice that wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE event handler can
+ call wxNotifyEvent::Veto() to prevent this from happening.
+
+ Currently support for setting this field and for vetoing the change is
+ only available in the generic version of wxDataViewCtrl, i.e. under MSW
+ but not GTK nor OS X.
+
+ @since 2.9.3
+ */
+ bool IsEditCancelled() const;
+
/**
Sets the column index associated with this event.
*/
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,