From 39a7f085a4aac33ef5543a139c78f58bfdcd430f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 11 Sep 2005 11:14:26 +0000 Subject: [PATCH] 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 --- src/generic/listctrl.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index 28e4547c3c..69e9c26f88 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -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; -- 2.45.2