From 7b848b0db27300abdec22c4927b7ec19d8fbb988 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 10 Feb 2000 18:12:44 +0000 Subject: [PATCH] 1. fixed bug with the index of the last column in EVT_COL_CLICK being shifted by 1 (always) 2. added a menu item to toggle single/multiple selection to the sample git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/listctrl/listtest.cpp | 35 ++++++++++++++++++++++++++++++++--- samples/listctrl/listtest.h | 2 ++ src/generic/listctrl.cpp | 2 +- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp index ba2cd59791..6db715830d 100644 --- a/samples/listctrl/listtest.cpp +++ b/samples/listctrl/listtest.cpp @@ -52,6 +52,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(LIST_SORT, MyFrame::OnSort) EVT_MENU(LIST_SET_FG_COL, MyFrame::OnSetFgColour) EVT_MENU(LIST_SET_BG_COL, MyFrame::OnSetBgColour) + EVT_MENU(LIST_TOGGLE_MULTI_SEL, MyFrame::OnToggleMultiSel) END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) @@ -156,6 +157,9 @@ bool MyApp::OnInit() menuList->Append(LIST_SORT, "&Sort\tCtrl-S"); menuList->AppendSeparator(); menuList->Append(LIST_DELETE_ALL, "Delete &all items"); + menuList->AppendSeparator(); + menuList->Append(LIST_TOGGLE_MULTI_SEL, "&Multiple selection\tCtrl-M", + "Toggle multiple selection", TRUE); wxMenu *menuCol = new wxMenu; menuCol->Append(LIST_SET_FG_COL, "&Foreground colour..."); @@ -168,9 +172,15 @@ bool MyApp::OnInit() menubar->Append(menuCol, "&Colour"); frame->SetMenuBar(menubar); - frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL, wxPoint(0, 0), wxSize(400, 200), - wxLC_LIST|wxSUNKEN_BORDER|wxLC_EDIT_LABELS ); -// wxLC_LIST|wxLC_USER_TEXT|wxSUNKEN_BORDER); // wxLC_USER_TEXT requires app to supply all text on demand + frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL, + wxPoint(0, 0), wxSize(400, 200), + wxLC_LIST | + wxSUNKEN_BORDER | + wxLC_EDIT_LABELS | + // wxLC_USER_TEXT requires app to supply all text on demand + // wxLC_USER_TEXT | + wxLC_SINGLE_SEL + ); frame->m_logWindow = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxSize(400, 200), wxTE_MULTILINE|wxSUNKEN_BORDER); @@ -408,6 +418,25 @@ void MyFrame::OnSort(wxCommandEvent& WXUNUSED(event)) sw.Time())); } +void MyFrame::OnToggleMultiSel(wxCommandEvent& WXUNUSED(event)) +{ + m_logWindow->WriteText("Current selection mode: "); + + long flags = m_listCtrl->GetWindowStyleFlag(); + if ( flags & wxLC_SINGLE_SEL ) + { + m_listCtrl->SetWindowStyleFlag(flags & ~wxLC_SINGLE_SEL); + m_logWindow->WriteText("multiple"); + } + else + { + m_listCtrl->SetWindowStyleFlag(flags | wxLC_SINGLE_SEL); + m_logWindow->WriteText("single"); + } + + m_logWindow->WriteText("\nRecreate the control now\n"); +} + void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event)) { m_listCtrl->SetForegroundColour(wxGetColourFromUser(this)); diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h index 5c374ae3c0..3436c50f16 100644 --- a/samples/listctrl/listtest.h +++ b/samples/listctrl/listtest.h @@ -72,6 +72,7 @@ public: void OnSort(wxCommandEvent& event); void OnSetFgColour(wxCommandEvent& event); void OnSetBgColour(wxCommandEvent& event); + void OnToggleMultiSel(wxCommandEvent& event); void BusyOn(wxCommandEvent& event); void BusyOff(wxCommandEvent& event); @@ -99,6 +100,7 @@ enum LIST_SORT, LIST_SET_FG_COL, LIST_SET_BG_COL, + LIST_TOGGLE_MULTI_SEL, LIST_CTRL = 1000 }; diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 6421ecff52..bc7f6ae3a7 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -952,7 +952,7 @@ void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) m_minX = 0; bool hit_border = FALSE; int xpos = 0; - for (int j = 0; j < m_owner->GetColumnCount()-1; j++) + for (int j = 0; j < m_owner->GetColumnCount(); j++) { xpos += m_owner->GetColumnWidth( j ); m_column = j; -- 2.47.2