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
     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_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)
 END_EVENT_TABLE()
 
 BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
   menuList->Append(LIST_SORT, "&Sort\tCtrl-S");
   menuList->AppendSeparator();
   menuList->Append(LIST_DELETE_ALL, "Delete &all items");
   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...");
 
   wxMenu *menuCol = new wxMenu;
   menuCol->Append(LIST_SET_FG_COL, "&Foreground colour...");
   menubar->Append(menuCol, "&Colour");
   frame->SetMenuBar(menubar);
 
   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);
 
 
   frame->m_logWindow = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxSize(400, 200), wxTE_MULTILINE|wxSUNKEN_BORDER);
 
+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));
 void MyFrame::OnSetFgColour(wxCommandEvent& WXUNUSED(event))
 {
     m_listCtrl->SetForegroundColour(wxGetColourFromUser(this));
 
     void OnSort(wxCommandEvent& event);
     void OnSetFgColour(wxCommandEvent& event);
     void OnSetBgColour(wxCommandEvent& event);
     void OnSort(wxCommandEvent& event);
     void OnSetFgColour(wxCommandEvent& event);
     void OnSetBgColour(wxCommandEvent& event);
+    void OnToggleMultiSel(wxCommandEvent& event);
 
     void BusyOn(wxCommandEvent& event);
     void BusyOff(wxCommandEvent& event);
 
     void BusyOn(wxCommandEvent& event);
     void BusyOff(wxCommandEvent& event);
     LIST_SORT,
     LIST_SET_FG_COL,
     LIST_SET_BG_COL,
     LIST_SORT,
     LIST_SET_FG_COL,
     LIST_SET_BG_COL,
 
     m_minX = 0;
     bool hit_border = FALSE;
     int xpos = 0;
     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;
     {
         xpos += m_owner->GetColumnWidth( j );
         m_column = j;