From 83f0b1be0583ba8e810be71ba91fee3bee0b05da Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Sat, 19 Jun 2021 10:11:05 -0400 Subject: [PATCH] Bug 574271: Draw characters in the correct color on macos There is a bug in SWT on macos - Bug 568777 - with the cache of single character drawStrings with transparent backgrounds as a performance boost. This causes the terminal to draw some characters in the wrong color. The workaround is to not draw with transparency, which should be fine because we just filled the background with the same color that the 1 character string will draw with. The performance, measured with TerminalTextUITest in Fast mode with no throttling, does not seem affected and in my testing there does not seem to be any graphic side effects. Change-Id: I1b0aadae100d81a8f4533ba73273ccc8202e068f --- .../tm/internal/terminal/textcanvas/TextLineRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java index ab3d08080e3..845ee499581 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java +++ b/terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java @@ -176,7 +176,7 @@ public class TextLineRenderer implements ILinelRenderer { // TODO why do I have to draw the background character by character?????? gc.fillRectangle(xx, y, fStyleMap.getFontWidth(), fStyleMap.getFontHeight()); if (c != ' ' && c != '\000') { - gc.drawString(String.valueOf(c), fStyleMap.getCharOffset(c) + xx, y, true); + gc.drawString(String.valueOf(c), fStyleMap.getCharOffset(c) + xx, y, false); } } } else {