]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed wxListCtrl::RefreshItem(s) - it didn't update anything before
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 24 Feb 2008 17:07:13 +0000 (17:07 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 24 Feb 2008 17:07:13 +0000 (17:07 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52041 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/listctrl_mac.cpp

index db5e90e89a4a070aebc8d0bea3ffcb53b556ca36..fc27f289ef8027153d57b8e1843f485b8f7edf0a 100644 (file)
@@ -2297,9 +2297,26 @@ void wxListCtrl::RefreshItem(long item)
         return;
     }
 
-    wxRect rect;
-    GetItemRect(item, rect);
-    RefreshRect(rect);
+    if (m_dbImpl)
+    {
+        DataBrowserItemID id;
+
+        if ( !IsVirtual() )
+        {
+            wxMacDataItem* thisItem = m_dbImpl->GetItemFromLine(item);
+            id = (DataBrowserItemID) thisItem;
+        }
+        else
+            id = item+1;
+
+        m_dbImpl->wxMacDataBrowserControl::UpdateItems
+                  (
+                    kDataBrowserNoItem,
+                    1, &id,
+                    kDataBrowserItemNoProperty, // preSortProperty
+                    kDataBrowserNoItem // update all columns
+                  );
+    }
 }
 
 void wxListCtrl::RefreshItems(long itemFrom, long itemTo)
@@ -2310,14 +2327,35 @@ void wxListCtrl::RefreshItems(long itemFrom, long itemTo)
         return;
     }
 
-    wxRect rect1, rect2;
-    GetItemRect(itemFrom, rect1);
-    GetItemRect(itemTo, rect2);
+    if (m_dbImpl)
+    {
+        const long count = itemTo - itemFrom + 1;
+        DataBrowserItemID *ids = new DataBrowserItemID[count];
+
+        if ( !IsVirtual() )
+        {
+            for ( long i = 0; i < count; i++ )
+            {
+                wxMacDataItem* thisItem = m_dbImpl->GetItemFromLine(itemFrom+i);
+                ids[i] = (DataBrowserItemID) thisItem;
+            }
+        }
+        else
+        {
+            for ( long i = 0; i < count; i++ )
+                ids[i] = itemFrom+i+1;
+        }
 
-    wxRect rect = rect1;
-    rect.height = rect2.GetBottom() - rect1.GetTop();
+        m_dbImpl->wxMacDataBrowserControl::UpdateItems
+                  (
+                    kDataBrowserNoItem,
+                    count, ids,
+                    kDataBrowserItemNoProperty, // preSortProperty
+                    kDataBrowserNoItem // update all columns
+                  );
 
-    RefreshRect(rect);
+        delete[] ids;
+    }
 }
 
 void wxListCtrl::SetDropTarget( wxDropTarget *dropTarget )