]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/listctrl/listtest.cpp
updated version number
[wxWidgets.git] / samples / listctrl / listtest.cpp
index 8fc8a10781223d1a445d5d7293bfb9a9b87c25f5..bcf0dddac556ead5e21036a8aa4facc6792aa914 100644 (file)
@@ -90,7 +90,13 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
     EVT_LIST_ITEM_DESELECTED(LIST_CTRL, MyListCtrl::OnDeselected)
     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_COL_RIGHT_CLICK(LIST_CTRL, MyListCtrl::OnColRightClick)
+    EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, MyListCtrl::OnColBeginDrag)
+    EVT_LIST_COL_DRAGGING(LIST_CTRL, MyListCtrl::OnColDragging)
+    EVT_LIST_COL_END_DRAG(LIST_CTRL, MyListCtrl::OnColEndDrag)
+
     EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint)
 
     EVT_CHAR(MyListCtrl::OnChar)
@@ -360,9 +366,23 @@ void MyFrame::InitWithReportItems()
 {
     m_listCtrl->SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL);
 
+    // under MSW for SetColumnWidth() to work we need to create the items with
+    // images initially
+#if 1
+    wxListItem itemCol;
+    itemCol.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE;
+    itemCol.m_text = "Column 1";
+    itemCol.m_image = -1;
+    m_listCtrl->InsertColumn(0, itemCol);
+    itemCol.m_text = "Column 2";
+    m_listCtrl->InsertColumn(1, itemCol);
+    itemCol.m_text = "Column 3";
+    m_listCtrl->InsertColumn(2, itemCol);
+#else
     m_listCtrl->InsertColumn(0, "Column 1"); // , wxLIST_FORMAT_LEFT, 140);
     m_listCtrl->InsertColumn(1, "Column 2"); // , wxLIST_FORMAT_LEFT, 140);
     m_listCtrl->InsertColumn(2, "One More Column (2)"); // , wxLIST_FORMAT_LEFT, 140);
+#endif
 
     // to speed up inserting we hide the control temporarily
     m_listCtrl->Hide();
@@ -572,15 +592,52 @@ void MyListCtrl::OnCacheHint(wxListEvent& event)
                   event.GetCacheFrom(), event.GetCacheTo() );
 }
 
+void MyListCtrl::SetColumnImage(int col, int image)
+{
+    wxListItem item;
+    item.SetMask(wxLIST_MASK_IMAGE);
+    item.SetImage(image);
+    SetColumn(col, item);
+}
+
 void MyListCtrl::OnColClick(wxListEvent& event)
 {
-    wxLogMessage( wxT("OnColumnClick at %d."), event.GetColumn() );
+    int col = event.GetColumn();
+    SetColumnImage(col, 0);
+
+    wxLogMessage( wxT("OnColumnClick at %d."), col );
+}
+
+void MyListCtrl::OnColRightClick(wxListEvent& event)
+{
+    int col = event.GetColumn();
+    SetColumnImage(col, -1);
+
+    wxLogMessage( wxT("OnColumnRightClick at %d."), event.GetColumn() );
+}
+
+void MyListCtrl::OnColBeginDrag(wxListEvent& event)
+{
+    wxLogMessage( wxT("OnColBeginDrag: column %d."), event.GetColumn() );
+}
+
+void MyListCtrl::OnColDragging(wxListEvent& event)
+{
+    wxLogMessage( wxT("OnColDragging: column %d."), event.GetColumn() );
+}
+
+void MyListCtrl::OnColEndDrag(wxListEvent& event)
+{
+    wxLogMessage( wxT("OnColEndDrag: column %d."), event.GetColumn() );
 }
 
 void MyListCtrl::OnBeginDrag(wxListEvent& event)
 {
-    wxLogMessage( wxT("OnBeginDrag at %d,%d."),
-                  event.m_pointDrag.x, event.m_pointDrag.y );
+    const wxPoint& pt = event.m_pointDrag;
+
+    int flags;
+    wxLogMessage( wxT("OnBeginDrag at (%d, %d), item %ld."),
+                  pt.x, pt.y, HitTest(pt, flags) );
 }
 
 void MyListCtrl::OnBeginRDrag(wxListEvent& event)