]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/checklst.cpp
don't compare invalid iterators/node pointers
[wxWidgets.git] / src / univ / checklst.cpp
index df130aa29070a7e692aee154e8882fef90eee7c2..384d39359c10620a3f253a29dcda387b6b4e7035 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        univ/checklst.cpp
+// Name:        src/univ/checklst.cpp
 // Purpose:     wxCheckListBox implementation
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
-    #pragma implementation "univchecklst.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
@@ -55,6 +51,35 @@ void wxCheckListBox::Init()
 {
 }
 
+wxCheckListBox::wxCheckListBox(wxWindow *parent,
+                               wxWindowID id,
+                               const wxPoint &pos,
+                               const wxSize &size,
+                               const wxArrayString& choices,
+                               long style,
+                               const wxValidator& validator,
+                               const wxString &name)
+{
+    Init();
+
+    Create(parent, id, pos, size, choices, style, validator, name);
+}
+
+bool wxCheckListBox::Create(wxWindow *parent,
+                            wxWindowID id,
+                            const wxPoint &pos,
+                            const wxSize &size,
+                            const wxArrayString& choices,
+                            long style,
+                            const wxValidator& validator,
+                            const wxString &name)
+{
+    wxCArrayString chs(choices);
+
+    return Create(parent, id, pos, size, chs.GetCount(), chs.GetStrings(),
+                  style, validator, name);
+}
+
 bool wxCheckListBox::Create(wxWindow *parent,
                             wxWindowID id,
                             const wxPoint &pos,
@@ -67,11 +92,11 @@ bool wxCheckListBox::Create(wxWindow *parent,
 {
     if ( !wxListBox::Create(parent, id, pos, size,
                             n, choices, style, validator, name) )
-        return FALSE;
+        return false;
 
     CreateInputHandler(wxINP_HANDLER_CHECKLISTBOX);
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -80,7 +105,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
 
 bool wxCheckListBox::IsChecked(size_t item) const
 {
-    wxCHECK_MSG( item < m_checks.GetCount(), FALSE,
+    wxCHECK_MSG( item < m_checks.GetCount(), false,
                  _T("invalid index in wxCheckListBox::IsChecked") );
 
     return m_checks[item] != 0;
@@ -107,7 +132,7 @@ void wxCheckListBox::Check(size_t item, bool check)
 
 void wxCheckListBox::Delete(int n)
 {
-    wxCHECK_RET( n < GetCount(), _T("invalid index in wxListBox::Delete") );
+    wxCHECK_RET( IsValid(n), _T("invalid index in wxListBox::Delete") );
 
     wxListBox::Delete(n);
 
@@ -119,7 +144,7 @@ int wxCheckListBox::DoAppend(const wxString& item)
     int pos = wxListBox::DoAppend(item);
 
     // the item is initially unchecked
-    m_checks.Insert(FALSE, pos);
+    m_checks.Insert(false, pos);
 
     return pos;
 }
@@ -131,7 +156,7 @@ void wxCheckListBox::DoInsertItems(const wxArrayString& items, int pos)
     size_t count = items.GetCount();
     for ( size_t n = 0; n < count; n++ )
     {
-        m_checks.Insert(FALSE, pos + n);
+        m_checks.Insert(false, pos + n);
     }
 }
 
@@ -143,7 +168,7 @@ void wxCheckListBox::DoSetItems(const wxArrayString& items, void **clientData)
     size_t count = items.GetCount();
     for ( size_t n = 0; n < count; n++ )
     {
-        m_checks.Add(FALSE);
+        m_checks.Add(false);
     }
 }
 
@@ -198,7 +223,7 @@ bool wxCheckListBox::PerformAction(const wxControlAction& action,
         return wxListBox::PerformAction(action, numArg, strArg);
     }
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
@@ -211,26 +236,26 @@ wxStdCheckListboxInputHandler(wxInputHandler *inphand)
 {
 }
 
-bool wxStdCheckListboxInputHandler::HandleKey(wxControl *control,
+bool wxStdCheckListboxInputHandler::HandleKey(wxInputConsumer *consumer,
                                               const wxKeyEvent& event,
                                               bool pressed)
 {
     if ( pressed && (event.GetKeyCode() == WXK_SPACE) )
-        control->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE);
+        consumer->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE);
 
-    return wxStdListboxInputHandler::HandleKey(control, event, pressed);
+    return wxStdListboxInputHandler::HandleKey(consumer, event, pressed);
 }
 
-bool wxStdCheckListboxInputHandler::HandleMouse(wxControl *control,
+bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer,
                                                 const wxMouseEvent& event)
 {
     if ( event.LeftDown() || event.LeftDClick() )
     {
-        wxCheckListBox *lbox = wxStaticCast(control, wxCheckListBox);
+        wxCheckListBox *lbox = wxStaticCast(consumer->GetInputWindow(), wxCheckListBox);
         int x, y;
 
         wxPoint pt = event.GetPosition();
-        pt -= control->GetClientAreaOrigin();
+        pt -= consumer->GetInputWindow()->GetClientAreaOrigin();
         lbox->CalcUnscrolledPosition(pt.x, pt.y, &x, &y);
 
         wxRenderer *renderer = lbox->GetRenderer();
@@ -240,15 +265,15 @@ bool wxStdCheckListboxInputHandler::HandleMouse(wxControl *control,
         if ( x >= 0 &&
              x < renderer->GetCheckBitmapSize().x &&
              item >= 0 &&
-             item < lbox->GetCount() )
+             (size_t)item < lbox->GetCount() )
         {
             lbox->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE, item);
 
-            return TRUE;
+            return true;
         }
     }
 
-    return wxStdListboxInputHandler::HandleMouse(control, event);
+    return wxStdListboxInputHandler::HandleMouse(consumer, event);
 }
 
 #endif // wxUSE_CHECKLISTBOX