From f1651ee579bf38a49b839dbcb28ac38c0163a3d2 Mon Sep 17 00:00:00 2001 From: Sergey Farbotka Date: Fri, 21 Sep 2012 14:12:09 +0200 Subject: Fix fdo#55142 - wrong character pos calculation on mac. Change-Id: If8a0f527102b70bf1dcf292f8df31aaff9fba5c8 --- vcl/aqua/source/gdi/atsui/salgdi.cxx | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'vcl/aqua/source/gdi') diff --git a/vcl/aqua/source/gdi/atsui/salgdi.cxx b/vcl/aqua/source/gdi/atsui/salgdi.cxx index 5c0bff7a6243..a57068db0efc 100644 --- a/vcl/aqua/source/gdi/atsui/salgdi.cxx +++ b/vcl/aqua/source/gdi/atsui/salgdi.cxx @@ -354,6 +354,8 @@ AquaSalGraphics::AquaSalGraphics() { // create the style object for font attributes ATSUCreateStyle( &maATSUStyle ); + + ResetFontStyle(); } // ----------------------------------------------------------------------- @@ -579,6 +581,29 @@ bool AquaSalGraphics::AddTempDevFont( ImplDevFontList*, // ----------------------------------------------------------------------- +void AquaSalGraphics::ResetFontStyle() +{ + ATSUClearStyle(maATSUStyle); + + // Set justification attributes + ATSJustPriorityWidthDeltaOverrides nPriorityJustOverrides; + memset(nPriorityJustOverrides, 0, sizeof(nPriorityJustOverrides)); + + nPriorityJustOverrides[kJUSTLetterPriority].growFlags = kJUSTOverrideLimits; + nPriorityJustOverrides[kJUSTLetterPriority].shrinkFlags = kJUSTOverrideLimits; + + ATSUAttributeTag theTag = kATSUPriorityJustOverrideTag; + ByteCount theSize = sizeof(ATSJustPriorityWidthDeltaOverrides); + ATSUAttributeValuePtr thePtr = &nPriorityJustOverrides; + OSStatus eStatus = ATSUSetAttributes(maATSUStyle, 1, &theTag, &theSize, &thePtr); + if (eStatus != noErr) + { + DBG_WARNING("AquaSalGraphics::ResetFontStyle() : Could not override justification attributes!\n"); + } +} + +// ----------------------------------------------------------------------- + // callbacks from ATSUGlyphGetCubicPaths() fore GetGlyphOutline() struct GgoData { basegfx::B2DPolygon maPolygon; basegfx::B2DPolyPolygon* mpPolyPoly; }; @@ -698,7 +723,7 @@ sal_uInt16 AquaSalGraphics::SetFont( FontSelectPattern* pReqFont, int /*nFallbac { if( !pReqFont ) { - ATSUClearStyle( maATSUStyle ); + ResetFontStyle(); mpMacFontData = NULL; return 0; } @@ -784,7 +809,7 @@ sal_uInt16 AquaSalGraphics::SetFont( FontSelectPattern* pReqFont, int /*nFallbac if( eStatus != noErr ) { DBG_WARNING( "AquaSalGraphics::SetFont() : Could not set font attributes!\n"); - ATSUClearStyle( maATSUStyle ); + ResetFontStyle(); mpMacFontData = NULL; return 0; } -- cgit