From: Stefan Csomor Date: Fri, 30 Nov 2007 15:36:22 +0000 (+0000) Subject: fixing 10.5 only compiles X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b7dbd50c8989a64a90a8b6079d52b006b4a003c1?ds=inline fixing 10.5 only compiles git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/fontdlg.cpp b/src/mac/carbon/fontdlg.cpp index b6be431de3..13909cd946 100644 --- a/src/mac/carbon/fontdlg.cpp +++ b/src/mac/carbon/fontdlg.cpp @@ -46,7 +46,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#include "wx/mac/private.h" +#include "wx/mac/uma.h" // --------------------------------------------------------------------------- // wxFontDialog @@ -66,18 +66,33 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), OSStatus result = eventNotHandledErr ; wxFontDialog *fontdialog = (wxFontDialog*) userData ; wxFontData& fontdata= fontdialog->GetFontData() ; - + wxMacCarbonEvent cEvent( event ); switch(cEvent.GetKind()) { case kEventFontSelection : { + bool setup = false ; +#if wxMAC_USE_CORE_TEXT + if ( UMAGetSystemVersion() >= 0x1050 ) + { + CTFontDescriptorRef descr; + if ( cEvent.GetParameter( kEventParamCTFontDescriptor, typeCTFontDescriptorRef, &descr ) == noErr ) + { + wxFont font; + font.MacCreateFromCTFontDescriptor(descr); + fontdata.SetChosenFont( font ) ; + setup = true; + } + } +#endif +#if wxMAC_USE_ATSU_TEXT ATSUFontID fontId = 0 ; - if ( cEvent.GetParameter(kEventParamATSUFontID, &fontId) == noErr ) + if ( !setup && (cEvent.GetParameter(kEventParamATSUFontID, &fontId) == noErr) ) { FMFontStyle fontStyle = cEvent.GetParameter(kEventParamFMFontStyle); FMFontSize fontSize = cEvent.GetParameter(kEventParamFMFontSize); - + CFStringRef cfName = NULL; #if 1 FMFontFamily fontFamily = cEvent.GetParameter(kEventParamFMFontFamily); @@ -89,25 +104,25 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), ByteCount actualLength = 0; char *c = NULL; OSStatus err = ATSUFindFontName(fontId , kFontFamilyName, kFontUnicodePlatform, kFontNoScriptCode, - kFontNoLanguageCode , 0 , NULL , &actualLength , NULL ); + kFontNoLanguageCode , 0 , NULL , &actualLength , NULL ); if ( err == noErr) { actualLength += 1 ; char *c = (char*)malloc( actualLength ); err = ATSUFindFontName(fontId, kFontFamilyName, kFontUnicodePlatform, kFontNoScriptCode, - kFontNoLanguageCode, actualLength, c , NULL, NULL); + kFontNoLanguageCode, actualLength, c , NULL, NULL); cfName = CFStringCreateWithCharacters(NULL, (UniChar*) c, (actualLength-1) >> 1); } else { err = ATSUFindFontName(fontId , kFontFamilyName, kFontNoPlatformCode, kFontNoScriptCode, - kFontNoLanguageCode , 0 , NULL , &actualLength , NULL ); + kFontNoLanguageCode , 0 , NULL , &actualLength , NULL ); if ( err == noErr ) { actualLength += 1 ; c = (char*)malloc(actualLength); err = ATSUFindFontName(fontId, kFontFamilyName, kFontNoPlatformCode, kFontNoScriptCode, - kFontNoLanguageCode, actualLength, c , NULL, NULL); + kFontNoLanguageCode, actualLength, c , NULL, NULL); c[actualLength-1] = 0; cfName = CFStringCreateWithCString(NULL, c, kCFStringEncodingMacRoman ); } @@ -115,7 +130,6 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), if ( c!=NULL ) free(c); #endif - if ( cfName!=NULL ) { fontdata.m_chosenFont.SetFaceName(wxMacCFStringHolder(cfName).AsString(wxLocale::GetSystemEncoding())); @@ -125,7 +139,9 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), fontdata.m_chosenFont.SetWeight(fontStyle & bold ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL); } } - +#endif // wxMAC_USE_ATSU_TEXT + + // retrieving the color RGBColor fontColor ; if ( cEvent.GetParameter(kEventParamFontColor, &fontColor) == noErr ) { @@ -143,8 +159,8 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), CFDataRef sizesData; CFDataRef valuesData; if ( CFDictionaryGetValueIfPresent(attributesDict, kFontPanelAttributeTagsKey, (const void **)&tagsData) && - CFDictionaryGetValueIfPresent(attributesDict, kFontPanelAttributeSizesKey, (const void **)&sizesData) && - CFDictionaryGetValueIfPresent(attributesDict, kFontPanelAttributeValuesKey, (const void **)&valuesData) ) + CFDictionaryGetValueIfPresent(attributesDict, kFontPanelAttributeSizesKey, (const void **)&sizesData) && + CFDictionaryGetValueIfPresent(attributesDict, kFontPanelAttributeValuesKey, (const void **)&valuesData) ) { ItemCount count = CFDataGetLength(tagsData)/sizeof(ATSUAttributeTag); ATSUAttributeTag *tagPtr = (ATSUAttributeTag *)CFDataGetBytePtr(tagsData); @@ -167,7 +183,7 @@ wxMacCarbonFontPanelHandler(EventHandlerCallRef WXUNUSED(nextHandler), } break ; } ; - + return result ; } @@ -201,8 +217,23 @@ int wxFontDialog::ShowModal() font = m_fontData.m_initialFont ; } - ATSUStyle style = (ATSUStyle)font.MacGetATSUStyle(); - err = SetFontInfoForSelection (kFontSelectionATSUIType,1, &style , NULL); + bool setup = false; +#if wxMAC_USE_CORE_TEXT + if ( UMAGetSystemVersion() >= 0x1050 ) + { + CTFontDescriptorRef descr = (CTFontDescriptorRef)font.MacGetCTFontDescriptor(); + err = SetFontInfoForSelection (kFontSelectionCoreTextType,1, &descr , NULL); + setup = true; + } +#endif +#if wxMAC_USE_ATSU_TEXT + if ( !setup ) + { + ATSUStyle style = (ATSUStyle)font.MacGetATSUStyle(); + err = SetFontInfoForSelection (kFontSelectionATSUIType,1, &style , NULL); + setup = true; + } +#endif // just clicking on ENTER will not send us any font setting event, therefore we have to make sure // that field is already correct m_fontData.m_chosenFont = font ; diff --git a/src/mac/carbon/listctrl_mac.cpp b/src/mac/carbon/listctrl_mac.cpp index ba97e1840b..276081e22d 100644 --- a/src/mac/carbon/listctrl_mac.cpp +++ b/src/mac/carbon/listctrl_mac.cpp @@ -2769,26 +2769,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; + + if (font.Ok()) + { + if (font.GetFamily() != wxFONTFAMILY_DEFAULT) + info.fontID = font.MacGetThemeFontID(); - ::TextSize( (short)(font.MacGetFontSize()) ) ; - ::TextFace( font.MacGetFontStyle() ) ; + ::TextSize( (short)(font.MacGetFontSize()) ) ; + ::TextFace( font.MacGetFontStyle() ) ; + } } #endif diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 6c158e6acd..b9f08d6a90 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -1101,7 +1101,7 @@ void wxWindowMac::DoSetWindowVariant( wxWindowVariant variant ) m_peer->SetData(kControlEntireControl, kControlSizeTag, &size ) ; wxFont font ; - font.MacCreateThemeFont( themeFont ) ; + font.MacCreateFromThemeFont( themeFont ) ; SetFont( font ) ; }