Kaydet (Commit) c345429b authored tarafından Douglas Mencken's avatar Douglas Mencken Kaydeden (comit) David Tardon

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/9180Tested-by: 's avatarDavid Tardon <dtardon@redhat.com>
Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 3f72ad15
...@@ -172,6 +172,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) ...@@ -172,6 +172,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
// - CoreText handles spaces specially (in particular at the text end) // - CoreText handles spaces specially (in particular at the text end)
if( mnTrailingSpaceCount ) 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) if(rArgs.mpDXArray)
{ {
int nFullPixelWidth = nPixelWidth; int nFullPixelWidth = nPixelWidth;
...@@ -201,8 +206,9 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) ...@@ -201,8 +206,9 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
aCFText, aCFText,
mpTextStyle->GetStyleDict() ); mpTextStyle->GetStyleDict() );
mpCTLine = CTLineCreateWithAttributedString( pAttrStr ); mpCTLine = CTLineCreateWithAttributedString( pAttrStr );
CFRelease( aCFText);
CFRelease( pAttrStr ); CFRelease( pAttrStr );
CFRelease( aCFText );
#endif
// in RTL-layouts trailing spaces are leftmost // in RTL-layouts trailing spaces are leftmost
// TODO: use BiDi-algorithm to thoroughly check this assumption // TODO: use BiDi-algorithm to thoroughly check this assumption
...@@ -212,7 +218,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) ...@@ -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); CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth);
#endif
if( !pNewCTLine ) if( !pNewCTLine )
{ {
// CTLineCreateJustifiedLine can and does fail // CTLineCreateJustifiedLine can and does fail
...@@ -225,7 +235,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) ...@@ -225,7 +235,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs )
} }
CFRelease( mpCTLine ); CFRelease( mpCTLine );
mpCTLine = pNewCTLine; mpCTLine = pNewCTLine;
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
mfCachedWidth = nPixelWidth;
#else
mfCachedWidth = nPixelWidth + mfTrailingSpaceWidth; mfCachedWidth = nPixelWidth + mfTrailingSpaceWidth;
#endif
} }
// When drawing right aligned text, rounding errors in the position returned by // When drawing right aligned text, rounding errors in the position returned by
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment