+ m_editorCtrl = NULL;
+}
+
+const wxDataViewCtrl* wxDataViewRendererBase::GetView() const
+{
+ return wx_const_cast(wxDataViewRendererBase*, this)->GetOwner()->GetOwner();
+}
+
+bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect labelRect )
+{
+ m_item = item; // remember for later
+
+ unsigned int col = GetOwner()->GetModelColumn();
+ wxVariant value;
+ GetOwner()->GetOwner()->GetModel()->GetValue( value, item, col );
+
+ m_editorCtrl = CreateEditorCtrl( GetOwner()->GetOwner()->GetMainWindow(), labelRect, value );
+
+ wxDataViewEditorCtrlEvtHandler *handler =
+ new wxDataViewEditorCtrlEvtHandler( m_editorCtrl, (wxDataViewRenderer*) this );
+
+ m_editorCtrl->PushEventHandler( handler );
+
+#if defined(__WXGTK20__) && !defined(wxUSE_GENERICDATAVIEWCTRL)
+ handler->SetFocusOnIdle();
+#else
+ m_editorCtrl->SetFocus();
+#endif
+
+ // Now we should send Editing Started event
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED, GetOwner()->GetOwner()->GetId() );
+ event.SetDataViewColumn( GetOwner() );
+ event.SetModel( GetOwner()->GetOwner()->GetModel() );
+ event.SetItem( item );
+ GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event );
+
+ return true;
+}
+
+void wxDataViewRendererBase::CancelEditing()
+{
+ wxPendingDelete.Append( m_editorCtrl );
+
+ GetOwner()->GetOwner()->GetMainWindow()->SetFocus();
+
+ // m_editorCtrl->PopEventHandler( true );
+}
+
+bool wxDataViewRendererBase::FinishEditing()
+{
+ wxVariant value;
+ GetValueFromEditorCtrl( m_editorCtrl, value );
+
+ wxPendingDelete.Append( m_editorCtrl );
+
+ GetOwner()->GetOwner()->GetMainWindow()->SetFocus();
+
+ if (!Validate(value))
+ return false;
+
+ unsigned int col = GetOwner()->GetModelColumn();
+ GetOwner()->GetOwner()->GetModel()->SetValue( value, m_item, col );
+ GetOwner()->GetOwner()->GetModel()->ValueChanged( m_item, col );
+
+ // m_editorCtrl->PopEventHandler( true );
+
+ // Now we should send Editing Done event
+ wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE, GetOwner()->GetOwner()->GetId() );
+ event.SetDataViewColumn( GetOwner() );
+ event.SetModel( GetOwner()->GetOwner()->GetModel() );
+ event.SetItem( m_item );
+ GetOwner()->GetOwner()->GetEventHandler()->ProcessEvent( event );
+
+ return true;