This method is similar to wxListBox::GetSelections() and allows to retrieve
all checked items at once.
Closes #14969.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73422
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
- Fix wrong tab order in wxAuiNotebook after dragging (Mark Barber).
- Fix bug in generic wxDataViewCtrl column dragging (jobuz).
- Add wxMask::GetBitmap() for wxMSW, wxGTK and wxOSX
+- Add wxCheckListBox::GetCheckedItems() (hartwigw).
wxGTK:
virtual bool IsChecked(unsigned int item) const = 0;
virtual void Check(unsigned int item, bool check = true) = 0;
+ virtual unsigned int GetCheckedItems(wxArrayInt& checkedItems) const;
+
wxDECLARE_NO_COPY_CLASS(wxCheckListBoxBase);
};
Index of item whose check status is to be returned.
*/
bool IsChecked(unsigned int item) const;
-
+
+ /**
+ Return the indices of the checked items.
+
+ @param checkedItems
+ A reference to the array that is filled with the indices of the
+ checked items.
+ @return The number of checked items.
+
+ @see Check(), IsChecked()
+
+ @since 2.9.5
+ */
+ unsigned int GetCheckedItems(wxArrayInt& checkedItems) const;
};
wxPoint, Position, wxSize, Size )
+// ============================================================================
+// implementation
+// ============================================================================
+
+unsigned int wxCheckListBoxBase::GetCheckedItems(wxArrayInt& checkedItems) const
+{
+ unsigned int const numberOfItems = GetCount();
+
+ checkedItems.clear();
+ for ( unsigned int i = 0; i < numberOfItems; ++i )
+ {
+ if ( IsChecked(i) )
+ checkedItems.push_back(i);
+ }
+
+ return checkedItems.size();
+}
+
#endif
{
EventCounter toggled(m_check, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED);
+ wxArrayInt checkedItems;
wxArrayString testitems;
testitems.Add("item 0");
testitems.Add("item 1");
CPPUNIT_ASSERT_EQUAL(true, m_check->IsChecked(0));
CPPUNIT_ASSERT_EQUAL(false, m_check->IsChecked(1));
+ CPPUNIT_ASSERT_EQUAL(1, m_check->GetCheckedItems(checkedItems));
+ CPPUNIT_ASSERT_EQUAL(0, checkedItems[0]);
+
//Make sure a double check of an items doesn't deselect it
m_check->Check(0);