wxBEGIN_PROPERTIES_TABLE(wxCheckListBox)
wxEVENT_PROPERTY( Toggle , wxEVT_COMMAND_CHECKLISTBOX_TOGGLED , wxCommandEvent )
- wxPROPERTY_FLAGS( WindowStyle , wxCheckListBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , wxLB_OWNERDRAW /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+ wxPROPERTY_FLAGS( WindowStyle , wxCheckListBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , wxLB_OWNERDRAW /*flags*/ , wxT("Helpstring") , wxT("group")) // style
wxEND_PROPERTIES_TABLE()
wxBEGIN_HANDLERS_TABLE(wxCheckListBox)
SetMarginWidth(GetDefaultMarginWidth());
}
-/*
- * JACS - I've got the owner-draw stuff partially working with WIN16,
- * with a really horrible-looking cross for wxCheckListBox instead of a
- * check - could use a bitmap check-mark instead, defined in wx.rc.
- * Also there's a refresh problem whereby it doesn't always draw the
- * check until you click to the right of it, which is OK for WIN32.
- */
-
bool wxCheckListBoxItem::OnDrawItem(wxDC& dc, const wxRect& rc,
wxODAction act, wxODStatus stat)
{
HWND hwndListbox = (HWND)m_pParent->GetHWND();
- #ifdef __WIN32__
RECT rcUpdate;
if ( ::SendMessage(hwndListbox, LB_GETITEMRECT,
{
wxLogDebug(wxT("LB_GETITEMRECT failed"));
}
- #else // Win16
- // FIXME this doesn't work if the listbox is scrolled!
- size_t nHeight = m_pParent->GetItemHeight();
- size_t y = m_nIndex * nHeight;
- RECT rcUpdate ;
- rcUpdate.left = 0 ;
- rcUpdate.top = y ;
- rcUpdate.right = GetDefaultMarginWidth() ;
- rcUpdate.bottom = y + nHeight ;
- #endif // Win32/16
InvalidateRect(hwndListbox, &rcUpdate, FALSE);
}
int wxCheckListBox::DoHitTestItem(wxCoord x, wxCoord y) const
{
- #ifdef __WIN32__
int nItem = (int)::SendMessage
(
(HWND)GetHWND(),
0,
MAKELPARAM(x, y)
);
- #else // Win16
- // FIXME this doesn't work when the listbox is scrolled!
- int nItem = y / m_nItemHeight;
- #endif // Win32/16
return nItem >= m_noItems ? wxNOT_FOUND : nItem;
}
+
+wxSize wxCheckListBox::DoGetBestSize() const
+{
+ wxSize best = wxListBox::DoGetBestSize();
+ best.x += wxOwnerDrawn::GetDefaultMarginWidth(); // add room for the checkbox
+ return best;
+}
+
#endif