- m_bound_all.x = x;
- m_bound_all.y = y;
- switch (m_mode)
- {
- case wxLC_ICON:
- {
- AssignRect( m_bound_icon, 0, 0, 0, 0 );
- AssignRect( m_bound_label, 0, 0, 0, 0 );
- AssignRect( m_bound_hilight, m_bound_all );
- wxNode *node = m_items.First();
- if (node)
- {
- wxListItemData *item = (wxListItemData*)node->Data();
- if (item->HasImage())
+ m_bound_all.x = x;
+ m_bound_all.y = y;
+ switch (m_mode)
+ {
+ case wxLC_ICON:
+ {
+ AssignRect( m_bound_icon, 0, 0, 0, 0 );
+ AssignRect( m_bound_label, 0, 0, 0, 0 );
+ AssignRect( m_bound_hilight, m_bound_all );
+ wxNode *node = m_items.First();
+ if (node)
+ {
+ wxListItemData *item = (wxListItemData*)node->Data();
+ if (item->HasImage())
+ {
+ wxListItemData *item = (wxListItemData*)node->Data();
+ int w = 0;
+ int h = 0;
+ m_owner->GetImageSize( item->GetImage(), w, h );
+ m_bound_icon.x = m_bound_all.x + (m_spacing/2) - (w/2);
+ m_bound_icon.y = m_bound_all.y + m_spacing - h - 5;
+ m_bound_icon.width = w;
+ m_bound_icon.height = h;
+ if (!item->HasText())
+ {
+ AssignRect( m_bound_hilight, m_bound_icon );
+ m_bound_hilight.x -= 5;
+ m_bound_hilight.y -= 5;
+ m_bound_hilight.width += 9;
+ m_bound_hilight.height += 9;
+ }
+ }
+ if (item->HasText())
+ {
+ wxString s;
+ item->GetText( s );
+ wxCoord lw,lh;
+ dc->GetTextExtent( s, &lw, &lh );
+ if (m_bound_all.width > m_spacing)
+ m_bound_label.x = m_bound_all.x;
+ else
+ m_bound_label.x = m_bound_all.x + (m_spacing/2) - lw/2;
+ m_bound_label.y = m_bound_all.y + m_bound_all.height - lh;
+ m_bound_label.width = lw;
+ m_bound_label.height = lh;
+ AssignRect( m_bound_hilight, m_bound_label );
+ m_bound_hilight.x -= 2;
+ m_bound_hilight.y -= 2;
+ m_bound_hilight.width += 4;
+ m_bound_hilight.height += 4;
+ }
+ }
+ break;
+ }
+ case wxLC_LIST: