summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Canvas.java24
1 files changed, 14 insertions, 10 deletions
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;
}
}