]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/listctrl/listtest.cpp
Bakefile and other changes for new locations of STC and wxSVGFileDC.
[wxWidgets.git] / samples / listctrl / listtest.cpp
index 9f9a2df9d879d0d6f4d3e4a09ef483d98732dfa8..864a49dbfbb699a20436e84066be2fc3c17f8560 100644 (file)
@@ -42,6 +42,7 @@
 #include "wx/timer.h"           // for wxStopWatch
 #include "wx/colordlg.h"        // for wxGetColourFromUser
 #include "wx/settings.h"
+#include "wx/sysopt.h"
 
 #include "listtest.h"
 
@@ -91,6 +92,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(LIST_FREEZE, MyFrame::OnFreeze)
     EVT_MENU(LIST_THAW, MyFrame::OnThaw)
     EVT_MENU(LIST_TOGGLE_LINES, MyFrame::OnToggleLines)
+    EVT_MENU(LIST_MAC_USE_GENERIC, MyFrame::OnToggleMacUseGeneric)
 
     EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateShowColInfo)
     EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)
@@ -103,10 +105,6 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
     EVT_LIST_END_LABEL_EDIT(LIST_CTRL, MyListCtrl::OnEndLabelEdit)
     EVT_LIST_DELETE_ITEM(LIST_CTRL, MyListCtrl::OnDeleteItem)
     EVT_LIST_DELETE_ALL_ITEMS(LIST_CTRL, MyListCtrl::OnDeleteAllItems)
-#if WXWIN_COMPATIBILITY_2_4
-    EVT_LIST_GET_INFO(LIST_CTRL, MyListCtrl::OnGetInfo)
-    EVT_LIST_SET_INFO(LIST_CTRL, MyListCtrl::OnSetInfo)
-#endif
     EVT_LIST_ITEM_SELECTED(LIST_CTRL, MyListCtrl::OnSelected)
     EVT_LIST_ITEM_DESELECTED(LIST_CTRL, MyListCtrl::OnDeselected)
     EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
@@ -151,6 +149,9 @@ int wxCALLBACK MyCompareFunction(long item1, long item2, long WXUNUSED(sortData)
 // `Main program' equivalent, creating windows and returning main app frame
 bool MyApp::OnInit()
 {
+  if ( !wxApp::OnInit() )
+      return false;
+
   // Create the main frame window
   MyFrame *frame = new MyFrame(wxT("wxListCtrl Test"));
 
@@ -222,6 +223,9 @@ MyFrame::MyFrame(const wxChar *title)
     menuView->Append(LIST_SMALL_ICON_TEXT_VIEW, _T("Small icon &view with text\tF6"));
     menuView->Append(LIST_VIRTUAL_VIEW, _T("&Virtual view\tF7"));
     menuView->Append(LIST_SMALL_VIRTUAL_VIEW, _T("Small virtual vie&w\tF8"));
+#ifdef __WXMAC__
+    menuView->AppendCheckItem(LIST_MAC_USE_GENERIC, _T("Mac: Use Generic Control"));
+#endif
 
     wxMenu *menuList = new wxMenu;
     menuList->Append(LIST_FOCUS_LAST, _T("&Make last item current\tCtrl-L"));
@@ -340,6 +344,11 @@ void MyFrame::OnToggleLines(wxCommandEvent& event)
     m_listCtrl->SetSingleStyle(wxLC_HRULES | wxLC_VRULES, event.IsChecked());
 }
 
+void MyFrame::OnToggleMacUseGeneric(wxCommandEvent& event)
+{
+    wxSystemOptions::SetOption(wxT("mac.listctrl.always_use_generic"), event.IsChecked());
+}
+
 void MyFrame::OnFocusLast(wxCommandEvent& WXUNUSED(event))
 {
     long index = m_listCtrl->GetItemCount() - 1;
@@ -822,6 +831,7 @@ void MyListCtrl::OnEndLabelEdit(wxListEvent& event)
 void MyListCtrl::OnDeleteItem(wxListEvent& event)
 {
     LogEvent(event, _T("OnDeleteItem"));
+    wxLogMessage( wxT("Number of items when delete event is sent: %d"), GetItemCount() );
 }
 
 void MyListCtrl::OnDeleteAllItems(wxListEvent& event)
@@ -829,41 +839,6 @@ void MyListCtrl::OnDeleteAllItems(wxListEvent& event)
     LogEvent(event, _T("OnDeleteAllItems"));
 }
 
-#if WXWIN_COMPATIBILITY_2_4
-void MyListCtrl::OnGetInfo(wxListEvent& event)
-{
-    wxString msg;
-
-    msg << _T("OnGetInfo (") << event.m_item.m_itemId << _T(", ") << event.m_item.m_col << _T(")");
-    if ( event.m_item.m_mask & wxLIST_MASK_STATE )
-        msg << _T(" wxLIST_MASK_STATE");
-    if ( event.m_item.m_mask & wxLIST_MASK_TEXT )
-        msg << _T(" wxLIST_MASK_TEXT");
-    if ( event.m_item.m_mask & wxLIST_MASK_IMAGE )
-        msg << _T(" wxLIST_MASK_IMAGE");
-    if ( event.m_item.m_mask & wxLIST_MASK_DATA )
-        msg << _T(" wxLIST_MASK_DATA");
-    if ( event.m_item.m_mask & wxLIST_SET_ITEM )
-        msg << _T(" wxLIST_SET_ITEM");
-    if ( event.m_item.m_mask & wxLIST_MASK_WIDTH )
-        msg << _T(" wxLIST_MASK_WIDTH");
-    if ( event.m_item.m_mask & wxLIST_MASK_FORMAT )
-        msg << _T(" wxLIST_MASK_WIDTH");
-
-    if ( event.m_item.m_mask & wxLIST_MASK_TEXT )
-    {
-        event.m_item.m_text = _T("My callback text");
-    }
-
-    wxLogMessage(msg);
-}
-
-void MyListCtrl::OnSetInfo(wxListEvent& event)
-{
-    LogEvent(event, _T("OnSetInfo"));
-}
-#endif
-
 void MyListCtrl::OnSelected(wxListEvent& event)
 {
     LogEvent(event, _T("OnSelected"));
@@ -914,6 +889,12 @@ void MyListCtrl::OnListKeyDown(wxListEvent& event)
             {
                 wxListItem info;
                 info.m_itemId = event.GetIndex();
+                if ( info.m_itemId == -1 )
+                {
+                    // no item
+                    break;
+                }
+
                 GetItem(info);
 
                 wxListItemAttr *attr = info.GetAttributes();