From c727147cfc912981c3a3385133f2828fe1d74e9b Mon Sep 17 00:00:00 2001 From: Silenio Quarti Date: Thu, 16 Aug 2012 10:41:49 -0400 Subject: Bug 386274 - [OpenGL] Transparent background flicker in GLCanvas starting 3.7.2 --- .../common/org/eclipse/swt/custom/CTabFolder.java | 2 +- .../cocoa/org/eclipse/swt/widgets/Canvas.java | 24 +++++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'bundles') diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java index 28e23a2aab..b7306d1588 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java @@ -2460,8 +2460,8 @@ void setButtonBounds(GC gc) { if (overflow[0][i]) { controls[i].setBounds(rects[i]); } else { - controls[i].setBounds(rects[i].x, rects[i].y, rects[i].width, headerHeight); controls[i].moveAbove(null); + controls[i].setBounds(rects[i].x, rects[i].y, rects[i].width, headerHeight); } } if (!changed && !rects[i].equals(controlRects[i])) changed = true; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java index 7e3599f4e9..b2b5edd798 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java @@ -139,17 +139,21 @@ public void drawBackground (GC gc, int x, int y, int width, int height) { void drawBackground (int /*long*/ id, NSGraphicsContext context, NSRect rect) { super.drawBackground(id, context, rect); if (glcontext != null) { - context.saveGraphicsState(); - context.setCompositingOperation(OS.NSCompositeClear); - if (visiblePath == null) { - int /*long*/ visibleRegion = getVisibleRegion(); - visiblePath = getPath(visibleRegion); - OS.DisposeRgn(visibleRegion); + if (isObscured()) { + glcontext.setValues(new int[]{-1}, OS.NSOpenGLCPSurfaceOrder); + context.saveGraphicsState(); + context.setCompositingOperation(OS.NSCompositeClear); + if (visiblePath == null) { + int /*long*/ visibleRegion = getVisibleRegion(); + visiblePath = getPath(visibleRegion); + OS.DisposeRgn(visibleRegion); + } + visiblePath.addClip(); + NSBezierPath.fillRect(rect); + context.restoreGraphicsState(); + } else { + glcontext.setValues(new int[]{1}, OS.NSOpenGLCPSurfaceOrder); } - visiblePath.addClip(); - NSBezierPath.fillRect(rect); - context.restoreGraphicsState(); - return; } } -- cgit