[Libreoffice-commits] .: vcl/aqua vcl/inc
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Sep 21 05:13:40 PDT 2012
vcl/aqua/source/gdi/atsui/salgdi.cxx | 29 +++++++++++++++++++++++++++--
vcl/inc/aqua/atsui/salgdi.h | 1 +
2 files changed, 28 insertions(+), 2 deletions(-)
New commits:
commit f1651ee579bf38a49b839dbcb28ac38c0163a3d2
Author: Sergey Farbotka <z8sergey8z at gmail.com>
Date: Fri Sep 21 14:12:09 2012 +0200
Fix fdo#55142 - wrong character pos calculation on mac.
Change-Id: If8a0f527102b70bf1dcf292f8df31aaff9fba5c8
diff --git a/vcl/aqua/source/gdi/atsui/salgdi.cxx b/vcl/aqua/source/gdi/atsui/salgdi.cxx
index 5c0bff7..a57068d 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;
}
diff --git a/vcl/inc/aqua/atsui/salgdi.h b/vcl/inc/aqua/atsui/salgdi.h
index 19fe1f4..eeb7aa4 100644
--- a/vcl/inc/aqua/atsui/salgdi.h
+++ b/vcl/inc/aqua/atsui/salgdi.h
@@ -353,6 +353,7 @@ private:
bool GetRawFontData( const PhysicalFontFace* pFontData,
std::vector<unsigned char>& rBuffer,
bool* pJustCFF );
+ void ResetFontStyle();
};
// --- some trivial inlines
More information about the Libreoffice-commits
mailing list