X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/937013e0fd914d4c42f9f5ec98da665986b93dfa..3863c5ebd92650ba88f29db4f5f8d794ec11bf80:/src/mac/carbon/listctrl_mac.cpp diff --git a/src/mac/carbon/listctrl_mac.cpp b/src/mac/carbon/listctrl_mac.cpp index ba97e1840b..fc27f289ef 100644 --- a/src/mac/carbon/listctrl_mac.cpp +++ b/src/mac/carbon/listctrl_mac.cpp @@ -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