vcl/quartz/ctlayout.cxx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
New commits: commit c345429b27da24ac4b7ecb73a5a6311cd5e93576 Author: Douglas Mencken <dougmenc...@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 <dtar...@redhat.com> Reviewed-by: David Tardon <dtar...@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 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits