X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c71963cdbeb3b801cbce75830922dfa05c5ee721..04633c190f5a6eafe607a5712647aaa131522b1f:/samples/listctrl/listtest.cpp diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index 2f43870e21..4a23f885dd 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -78,6 +78,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LIST_THAW, MyFrame::OnThaw) EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateShowColInfo) + EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) @@ -249,6 +250,13 @@ MyFrame::~MyFrame() } void MyFrame::OnSize(wxSizeEvent& event) +{ + DoSize(); + + event.Skip(); +} + +void MyFrame::DoSize() { if ( !m_logWindow ) return; @@ -257,8 +265,17 @@ void MyFrame::OnSize(wxSizeEvent& event) wxCoord y = (2*size.y)/3; m_listCtrl->SetSize(0, 0, size.x, y); m_logWindow->SetSize(0, y + 1, size.x, size.y - y); +} - event.Skip(); +bool MyFrame::CheckNonVirtual() const +{ + if ( !m_listCtrl->HasFlag(wxLC_VIRTUAL) ) + return true; + + // "this" == whatever + wxLogWarning(_T("Can't do this in virtual view, sorry.")); + + return false; } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) @@ -302,11 +319,14 @@ void MyFrame::OnFocusLast(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnToggleFirstSel(wxCommandEvent& WXUNUSED(event)) { - m_listCtrl->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + m_listCtrl->SetItemState(0, (~m_listCtrl->GetItemState(0, wxLIST_STATE_SELECTED) ) & wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); } void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event)) { + if ( !CheckNonVirtual() ) + return; + int n = m_listCtrl->GetItemCount(); for (int i = 0; i < n; i++) m_listCtrl->SetItemState(i,0,wxLIST_STATE_SELECTED); @@ -314,6 +334,9 @@ void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event)) void MyFrame::OnSelectAll(wxCommandEvent& WXUNUSED(event)) { + if ( !CheckNonVirtual() ) + return; + int n = m_listCtrl->GetItemCount(); for (int i = 0; i < n; i++) m_listCtrl->SetItemState(i,wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); @@ -365,9 +388,7 @@ void MyFrame::RecreateList(long flags, bool withText) } } -#ifdef __WXMSW__ - SendSizeEvent(); -#endif + DoSize(); m_logWindow->Clear(); } @@ -571,6 +592,11 @@ void MyFrame::OnToggleMultiSel(wxCommandEvent& WXUNUSED(event)) RecreateList(flags); } +void MyFrame::OnUpdateToggleMultiSel(wxUpdateUIEvent& event) +{ + event.Check((m_listCtrl->GetWindowStyleFlag() & wxLC_SINGLE_SEL) == 0); +} + void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event)) { m_listCtrl->SetForegroundColour(wxGetColourFromUser(this)); @@ -716,7 +742,9 @@ void MyListCtrl::OnBeginLabelEdit(wxListEvent& event) void MyListCtrl::OnEndLabelEdit(wxListEvent& event) { - wxLogMessage( wxT("OnEndLabelEdit: %s"), event.m_item.m_text.c_str()); + wxLogMessage( wxT("OnEndLabelEdit: %s"), + event.IsEditCancelled() ? _T("[cancelled]") + : event.m_item.m_text.c_str()); } void MyListCtrl::OnDeleteItem(wxListEvent& event)