From f53c2ae044619fd293b74d7d630ba26d019eb01d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Thu, 21 Nov 2013 13:11:35 +0000 Subject: [PATCH] Override ClearColumns() in wxDataViewListCtrl. Without this, the associated store's columns would be out of sync, causing asserts next time a column is appended. Fixes #14952. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@75258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataview.h | 6 ++++++ src/common/datavcmn.cpp | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 298ab7f979..ba0cafa3bb 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -972,6 +972,9 @@ public: void InsertItem( unsigned int row, const wxVector &values, wxUIntPtr data = 0 ); void DeleteItem( unsigned int pos ); void DeleteAllItems(); +#if wxABI_VERSION >= 30001 + void ClearColumns(); +#endif unsigned int GetItemCount() const; @@ -1040,6 +1043,9 @@ public: virtual bool PrependColumn( wxDataViewColumn *col ); virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col ); virtual bool AppendColumn( wxDataViewColumn *col ); +#if wxABI_VERSION >= 30001 + virtual bool ClearColumns(); +#endif wxDataViewColumn *AppendTextColumn( const wxString &label, wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index f10f465ca2..fd7412117a 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -1790,6 +1790,11 @@ void wxDataViewListStore::DeleteAllItems() Reset( 0 ); } +void wxDataViewListStore::ClearColumns() +{ + m_cols.clear(); +} + void wxDataViewListStore::SetItemData( const wxDataViewItem& item, wxUIntPtr data ) { wxDataViewListStoreLine* line = m_data[GetRow(item)]; @@ -1893,6 +1898,12 @@ bool wxDataViewListCtrl::AppendColumn( wxDataViewColumn *col ) return AppendColumn( col, "string" ); } +bool wxDataViewListCtrl::ClearColumns() +{ + GetStore()->ClearColumns(); + return wxDataViewCtrl::ClearColumns(); +} + wxDataViewColumn *wxDataViewListCtrl::AppendTextColumn( const wxString &label, wxDataViewCellMode mode, int width, wxAlignment align, int flags ) {