[Libreoffice-commits] core.git: vcl/quartz
Douglas Mencken
dougmencken at gmail.com
Tue May 13 00:45:37 PDT 2014
vcl/quartz/ctlayout.cxx | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
New commits:
commit c345429b27da24ac4b7ecb73a5a6311cd5e93576
Author: Douglas Mencken <dougmencken at gmail.com>
Date: Sun Apr 27 11:57:39 2014 -0400
vcl-quartz: fix for fdo#77993 (specific to OS X <10.6)
When using current method, early version of CoreText crashes internally.
Change-Id: Id451d72ac26e4777b61f5d3fec6d4b046c46a749
Reviewed-on: https://gerrit.libreoffice.org/9180
Tested-by: David Tardon <dtardon at redhat.com>
Reviewed-by: David Tardon <dtardon at redhat.com>
diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx
index 7969991..0b29673 100644
--- a/vcl/quartz/ctlayout.cxx
+++ b/vcl/quartz/ctlayout.cxx
@@ -172,6 +172,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
// - CoreText handles spaces specially (in particular at the text end)
if( mnTrailingSpaceCount )
{
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+ // don't recreate line layout here, because this can lead to problems
+ // (looks like internal issues inside early CoreText versions)
+ mfTrailingSpaceWidth = CTLineGetTrailingWhitespaceWidth( mpCTLine );
+#else
if(rArgs.mpDXArray)
{
int nFullPixelWidth = nPixelWidth;
@@ -201,8 +206,9 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
aCFText,
mpTextStyle->GetStyleDict() );
mpCTLine = CTLineCreateWithAttributedString( pAttrStr );
- CFRelease( aCFText);
CFRelease( pAttrStr );
+ CFRelease( aCFText );
+#endif
// in RTL-layouts trailing spaces are leftmost
// TODO: use BiDi-algorithm to thoroughly check this assumption
@@ -212,7 +218,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
}
}
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+ CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth - mfTrailingSpaceWidth );
+#else
CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth);
+#endif
if( !pNewCTLine )
{
// CTLineCreateJustifiedLine can and does fail
@@ -225,7 +235,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
}
CFRelease( mpCTLine );
mpCTLine = pNewCTLine;
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+ mfCachedWidth = nPixelWidth;
+#else
mfCachedWidth = nPixelWidth + mfTrailingSpaceWidth;
+#endif
}
// When drawing right aligned text, rounding errors in the position returned by
More information about the Libreoffice-commits
mailing list