]> git.saurik.com Git - wxWidgets.git/commitdiff
fix setting colour for a listctrl item (merged from 2.2)
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 8 May 2001 02:21:18 +0000 (02:21 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 8 May 2001 02:21:18 +0000 (02:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/listctrl.cpp

index f0b62631d582b6ed228328493f092d344087ffa8..6f8fe1c01a4906954280ca14ea0418bcce05add2 100644 (file)
@@ -658,31 +658,40 @@ bool wxListCtrl::SetItem(wxListItem& info)
     LV_ITEM item;
     wxConvertToMSWListItem(this, info, item);
 
-    // check whether it has any custom attributes
-    if ( info.HasAttributes() )
+    item.cchTextMax = 0;
+    if ( !ListView_SetItem(GetHwnd(), &item) )
     {
+        wxLogDebug(_T("ListView_SetItem() failed"));
 
-        wxListItemAttr *attr;
-        attr = (wxListItemAttr*) m_attrs.Get(item.iItem);
+        return FALSE;
+    }
 
-        if (attr == NULL)
+    // we need to update the item immediately to show the new image
+    bool updateNow = (info.m_mask & wxLIST_MASK_IMAGE) != 0;
 
-            m_attrs.Put(item.iItem, (wxObject *)new wxListItemAttr(*info.GetAttributes()));
+    // check whether it has any custom attributes
+    if ( info.HasAttributes() )
+    {
+        wxListItemAttr *attr = (wxListItemAttr *)m_attrs.Get(item.iItem);
 
-        else *attr = *info.GetAttributes();
+        if ( attr == NULL )
+            m_attrs.Put(item.iItem, (wxObject *)new wxListItemAttr(*info.GetAttributes()));
+        else
+            *attr = *info.GetAttributes();
 
         m_hasAnyAttr = TRUE;
+
+        // if the colour has changed, we must redraw the item
+        updateNow = TRUE;
     }
 
-    item.cchTextMax = 0;
-    bool ok = ListView_SetItem(GetHwnd(), &item) != 0;
-    if ( ok && (info.m_mask & wxLIST_MASK_IMAGE) )
+    if ( updateNow )
     {
-        // make the change visible
+        // we need this to make the change visible right now
         ListView_Update(GetHwnd(), item.iItem);
     }
 
-    return ok;
+    return TRUE;
 }
 
 long wxListCtrl::SetItem(long index, int col, const wxString& label, int imageId)