diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 196bcb25a2..05f1b3992e 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -257,6 +257,8 @@ protected: } private: + void FinishEditing(); + bool SendEvent(wxEventType type, unsigned int n) { wxDataViewCtrl * const owner = GetOwner(); @@ -274,6 +276,8 @@ private: void OnClick(wxHeaderCtrlEvent& event) { + FinishEditing(); + const unsigned idx = event.GetColumn(); if ( SendEvent(wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, idx) ) @@ -318,6 +322,8 @@ private: void OnResize(wxHeaderCtrlEvent& event) { + FinishEditing(); + wxDataViewCtrl * const owner = GetOwner(); const unsigned col = event.GetColumn(); @@ -327,6 +333,8 @@ private: void OnEndReorder(wxHeaderCtrlEvent& event) { + FinishEditing(); + wxDataViewCtrl * const owner = GetOwner(); owner->ColumnMoved(owner->GetColumn(event.GetColumn()), event.GetNewOrder()); @@ -797,6 +805,7 @@ public: // Called by wxDataViewCtrl and our own OnRenameTimer() to start edit the // specified item in the given column. void StartEditing(const wxDataViewItem& item, const wxDataViewColumn* col); + void FinishEditing(); private: int RecalculateCount() const; @@ -2204,6 +2213,20 @@ wxDataViewMainWindow::StartEditing(const wxDataViewItem& item, } } +void wxDataViewMainWindow::FinishEditing() +{ + if ( m_editorCtrl ) + { + m_editorRenderer->FinishEditing(); + } +} + +void wxDataViewHeaderWindow::FinishEditing() +{ + wxDataViewMainWindow *win = static_cast(GetOwner()->GetMainWindow()); + win->FinishEditing(); +} + //----------------------------------------------------------------------------- // Helper class for do operation on the tree node //-----------------------------------------------------------------------------