]> git.saurik.com Git - wxWidgets.git/commitdiff
Respect wxListItem::m_mask in general list control Set/GetItem() and allow
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 11 Sep 2005 11:14:26 +0000 (11:14 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 11 Sep 2005 11:14:26 +0000 (11:14 +0000)
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

index 28e4547c3cf0539a9275df093041593ec4240b33..69e9c26f885165622a1e1801c400b74ee233fbe9 100644 (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;