From bd5fb8f3b07412e77119df48dcf2e233b224dcc8 Mon Sep 17 00:00:00 2001 From: jgodinez Date: Tue, 25 Sep 2012 09:18:27 -0700 Subject: [PATCH] 7158350: [macosx] Strange results of SwingUIText printing Reviewed-by: bae, prr --- src/macosx/native/sun/awt/CTextPipe.m | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/macosx/native/sun/awt/CTextPipe.m b/src/macosx/native/sun/awt/CTextPipe.m index bfe9ad626..6b1da8dea 100644 --- a/src/macosx/native/sun/awt/CTextPipe.m +++ b/src/macosx/native/sun/awt/CTextPipe.m @@ -142,8 +142,11 @@ void JavaCT_DrawGlyphVector // get our baseline transform and font CGContextRef cgRef = qsdo->cgRef; CGAffineTransform ctmText = CGContextGetTextMatrix(cgRef); - //CGFontRef cgFont = CGContextGetFont(cgRef); + /* Save and restore of graphics context is done before the iteration. + This seems to work using our test case (see bug ID 7158350) so we are restoring it at + the end of the for loop. If we find out that save/restore outside the loop + doesn't work on all cases then we will move the Save/Restore inside the loop.*/ CGContextSaveGState(cgRef); CGAffineTransform invTx = CGAffineTransformInvert(strike->fTx); @@ -210,13 +213,9 @@ void JavaCT_DrawGlyphVector pt.x += advances[i].width; pt.y += advances[i].height; - // reset the font on the context after striking a unicode with CoreText - if (uniChar != 0) - { - // CGContextSetFont(cgRef, cgFont); - CGContextSaveGState(cgRef); - } } + // reset the font on the context after striking a unicode with CoreText + CGContextRestoreGState(cgRef); } // Using the Quartz Surface Data context, draw a hot-substituted character run -- GitLab