void wxCheckListBox::OnLeftClick(wxMouseEvent& event) { // clicking on the item selects it, clicking on the checkmark toggles if ( event.GetX() <= 20 /*check width*/ ) { int lineheight ; int topcell ; #if TARGET_CARBON Point pt ; GetListCellSize( (ListHandle)m_macList , &pt ) ; lineheight = pt.v ; ListBounds visible ; GetListVisibleCells( (ListHandle)m_macList , &visible ) ; topcell = visible.top ; #else lineheight = (**(ListHandle)m_macList).cellSize.v ; topcell = (**(ListHandle)m_macList).visible.top ; #endif size_t nItem = ((size_t)event.GetY()) / lineheight + topcell ; if ( nItem < (size_t)m_noItems ) { Check(nItem, !IsChecked(nItem) ) ; wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, GetId()); event.SetInt(nItem); event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } //else: it's not an error, just click outside of client zone } else { // implement default behaviour: clicking on the item selects it event.Skip(); } }
void wxListBox::OnSize( wxSizeEvent &event) { Point pt; #if TARGET_CARBON GetListCellSize((ListHandle)m_macList, &pt); #else pt = (**(ListHandle)m_macList).cellSize ; #endif pt.h = m_width - 15 ; LCellSize( pt , (ListHandle)m_macList ) ; }