Respect wxListItem::m_mask in general list control Set/GetItem() and allow

them to be used to change/query the item selection and focus status (second
part of patch 1264533 from Ryan, modified to be backwards compatible)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-09-11 11:14:26 +00:00
parent bf354396f6
commit 39a7f085a4

View File

@@ -674,6 +674,7 @@ public:
wxString GetItemText(long item) const
{
wxListItem info;
info.m_mask = wxLIST_MASK_TEXT;
info.m_itemId = item;
GetItem( info );
return info.m_text;
@@ -997,9 +998,19 @@ int wxListItemData::GetHeight() const
void wxListItemData::GetItem( wxListItem &info ) const
{
info.m_text = m_text;
info.m_image = m_image;
info.m_data = m_data;
long mask = info.m_mask;
if ( !mask )
{
// by default, get everything for backwards compatibility
mask = -1;
}
if ( mask & wxLIST_MASK_TEXT )
info.m_text = m_text;
if ( mask & wxLIST_MASK_IMAGE )
info.m_image = m_image;
if ( mask & wxLIST_MASK_DATA )
info.m_data = m_data;
if ( m_attr )
{
@@ -3648,6 +3659,10 @@ void wxListMainWindow::SetItem( wxListItem &item )
wxListLineData *line = GetLine((size_t)id);
line->SetItem( item.m_col, item );
// Set item state if user wants
if ( item.m_mask & wxLIST_MASK_STATE )
SetItemState( item.m_itemId, item.m_state, item.m_state );
if (InReportView())
{
// update the Max Width Cache if needed
@@ -3831,6 +3846,11 @@ void wxListMainWindow::GetItem( wxListItem &item ) const
wxListLineData *line = GetLine((size_t)item.m_itemId);
line->GetItem( item.m_col, item );
// Get item state if user wants it
if ( item.m_mask & wxLIST_MASK_STATE )
item.m_state = GetItemState( item.m_itemId, wxLIST_STATE_SELECTED |
wxLIST_STATE_FOCUSED );
}
// ----------------------------------------------------------------------------
@@ -4996,6 +5016,7 @@ void wxGenericListCtrl::SetItemText( long item, const wxString& str )
wxUIntPtr wxGenericListCtrl::GetItemData( long item ) const
{
wxListItem info;
info.m_mask = wxLIST_MASK_DATA;
info.m_itemId = item;
m_mainWin->GetItem( info );
return info.m_data;