X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5cd891743efcff4d6603c68b98e72fb033792a88..a95cdab85c5e5abb2d40e594663f120db3675bb4:/samples/listctrl/listtest.cpp?ds=sidebyside diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index b0903b6e73..d1c8d7d4af 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -90,6 +90,7 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown) EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated) EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick) + EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint) EVT_CHAR(MyListCtrl::OnChar) END_EVENT_TABLE() @@ -551,6 +552,12 @@ void MyFrame::OnDeleteAll(wxCommandEvent& WXUNUSED(event)) // MyListCtrl +void MyListCtrl::OnCacheHint(wxListEvent& event) +{ + wxLogMessage( "OnCacheHint: cache items %ld..%ld", + event.GetCacheFrom(), event.GetCacheTo() ); +} + void MyListCtrl::OnColClick(wxListEvent& event) { wxLogMessage( "OnColumnClick at %d.", event.GetColumn() ); @@ -657,10 +664,37 @@ void MyListCtrl::OnListKeyDown(wxListEvent& event) { switch ( event.GetCode() ) { + case 'c': + { + wxListItem info; + info.m_itemId = event.GetIndex(); + GetItem(info); + + wxListItemAttr *attr = info.GetAttributes(); + if ( !attr || !attr->HasTextColour() ) + { + info.SetTextColour(*wxCYAN); + + SetItem(info); + } + } + break; + case WXK_DELETE: - DeleteItem(event.GetIndex()); + { + long item = GetNextItem(-1, + wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + while ( item != -1 ) + { + DeleteItem(item); - wxLogMessage(_T("Item %d deleted"), event.GetIndex()); + wxLogMessage(_T("Item %ld deleted"), item); + + // -1 because the indices were shifted by DeleteItem() + item = GetNextItem(item - 1, + wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + } + } break; case WXK_INSERT: @@ -708,6 +742,11 @@ int MyListCtrl::OnGetItemImage(long item) const return 0; } +wxListItemAttr *MyListCtrl::OnGetItemAttr(long item) const +{ + return item % 2 ? NULL : (wxListItemAttr *)&m_attr; +} + void MyListCtrl::InsertItemInReportView(int i) { wxString buf;