]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/listctrl/listtest.cpp
Untabified.
[wxWidgets.git] / samples / listctrl / listtest.cpp
index 89bda1e810bd16fb73aa9abdf897e6e6dd7125dd..c9462339ddf61ec1dd5920fd026c5e13eecbd7de 100644 (file)
@@ -249,6 +249,13 @@ MyFrame::~MyFrame()
 }
 
 void MyFrame::OnSize(wxSizeEvent& event)
+{
+    DoSize();
+
+    event.Skip();
+}
+
+void MyFrame::DoSize()
 {
     if ( !m_logWindow )
         return;
@@ -257,8 +264,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 +318,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 +333,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 +387,7 @@ void MyFrame::RecreateList(long flags, bool withText)
         }
     }
 
-#ifdef __WXMSW__
-        SendSizeEvent();
-#endif
+    DoSize();
 
     m_logWindow->Clear();
 }