]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/listctrl_mac.cpp
More doxygen topic overview cleanup.
[wxWidgets.git] / src / mac / carbon / listctrl_mac.cpp
index ba97e1840b85134c60673d6670cbfef176436592..fc27f289ef8027153d57b8e1843f485b8f7edf0a 100644 (file)
@@ -970,7 +970,7 @@ bool wxListCtrl::SetColumn(int col, wxListItem& item)
                 enc = m_font.GetEncoding();
             else
                 enc = wxLocale::GetSystemEncoding();
-            wxMacCFStringHolder cfTitle;
+            wxCFStringRef cfTitle;
             cfTitle.Assign( item.GetText() , enc );
             if(columnDesc.titleString)
                 CFRelease(columnDesc.titleString);
@@ -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 )
@@ -2666,8 +2704,7 @@ void wxMacDataBrowserListCtrlControl::DrawItem(
     if (font == wxNullFont)
         font = listFont;
 
-    wxMacCFStringHolder cfString;
-    cfString.Assign( text, wxLocale::GetSystemEncoding() );
+    wxCFStringRef cfString( text, wxLocale::GetSystemEncoding() );
 
     Rect enclosingRect;
     CGRect enclosingCGRect, iconCGRect, textCGRect;
@@ -2769,26 +2806,34 @@ void wxMacDataBrowserListCtrlControl::DrawItem(
 
     HIThemeTextHorizontalFlush hFlush = kHIThemeTextHorizontalFlushLeft;
     HIThemeTextInfo info;
-
-#ifdef __LP64__
-    info.version = kHIThemeTextInfoVersionOne;
-    info.fontID = kThemeViewsFont;
-    if (font.Ok())
+    bool setup = false;
+#if wxMAC_USE_CORE_TEXT
+    if ( UMAGetSystemVersion() >= 0x1050 )
     {
-        info.fontID = kThemeSpecifiedFont;
-        info.font = (CTFontRef) font.MacGetCTFont();
+        info.version = kHIThemeTextInfoVersionOne;
+        info.fontID = kThemeViewsFont;
+        if (font.Ok())
+        {
+            info.fontID = kThemeSpecifiedFont;
+            info.font = (CTFontRef) font.MacGetCTFont();
+            setup = true;
+        }
     }
-#else
-    info.version = kHIThemeTextInfoVersionZero;
-    info.fontID = kThemeViewsFont;
-
-    if (font.Ok())
+#endif
+#if wxMAC_USE_ATSU_TEXT
+    if ( !setup )
     {
-        if (font.GetFamily() != wxFONTFAMILY_DEFAULT)
-            info.fontID = font.MacGetThemeFontID();
+        info.version = kHIThemeTextInfoVersionZero;
+        info.fontID = kThemeViewsFont;
 
-        ::TextSize( (short)(font.MacGetFontSize()) ) ;
-        ::TextFace( font.MacGetFontStyle() ) ;
+        if (font.Ok())
+        {
+            if (font.GetFamily() != wxFONTFAMILY_DEFAULT)
+                info.fontID = font.MacGetThemeFontID();
+
+            ::TextSize( (short)(font.MacGetFontSize()) ) ;
+            ::TextFace( font.MacGetFontStyle() ) ;
+        }
     }
 #endif
 
@@ -2880,10 +2925,8 @@ OSStatus wxMacDataBrowserListCtrlControl::GetSetItemData(DataBrowserItemID itemI
             default :
                 if ( property >= kMinColumnId )
                 {
-                    wxMacCFStringHolder cfStr;
-
                     if (!text.IsEmpty()){
-                        cfStr.Assign( text, wxLocale::GetSystemEncoding() );
+                        wxCFStringRef cfStr( text, wxLocale::GetSystemEncoding() );
                         err = ::SetDataBrowserItemDataText( itemData, cfStr );
                         err = noErr;
                     }
@@ -2918,7 +2961,7 @@ OSStatus wxMacDataBrowserListCtrlControl::GetSetItemData(DataBrowserItemID itemI
                     // can then deal with the veto
                     CFStringRef sr ;
                     verify_noerr( GetDataBrowserItemDataText( itemData , &sr ) ) ;
-                    wxMacCFStringHolder cfStr(sr) ;;
+                    wxCFStringRef cfStr(sr) ;;
                     if (m_isVirtual)
                         list->SetItem( (long)itemData-1 , listColumn, cfStr.AsString() ) ;
                     else