From 5227aeb9930b97d7c686e96c3443cae0724bc01b Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Wed, 25 Apr 2018 18:13:48 +0200
Subject: [PATCH] Do not use screenshot of checkboxes to prevent crash on Mac
 OS X

- Patch is now also obviously required in binary Mac OS X RCP product

Issue-Ref: 2443
Signed-off-by: Simon Barner <barner@fortiss.org>
---
 .../tooling/base/ui/annotation/labelprovider/.ratings    | 2 +-
 .../annotation/labelprovider/CheckBoxLabelProvider.java  | 8 ++++++++
 .../src/org/fortiss/tooling/base/ui/viewers/.ratings     | 2 +-
 .../tooling/base/ui/viewers/CheckBoxLabelProvider.java   | 9 +++++++++
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/.ratings
index 9f5e77e63..12f9c64ff 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/.ratings
@@ -1,5 +1,5 @@
 AnnotationLabelProvider.java ddebfc2bf2c8306884eb748c2c649ff0fe9c3d21 GREEN
-CheckBoxLabelProvider.java 44d1e8394703802f14041a058eae89a70501792c GREEN
+CheckBoxLabelProvider.java 83f7216dfc05400c5b96aeba8c1add6a02f0eac5 YELLOW
 ElementCommentLabelProvider.java 76aa6e9b930ce5680607852fd776172942c89ce5 GREEN
 ElementLabelProviderBase.java f33502f73033ebdf30316df627e8a9c87e7d1b28 GREEN
 ElementNameLabelProvider.java 897296ac8318b6dfdea9c50fc73aaeea23c2fffa GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/CheckBoxLabelProvider.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/CheckBoxLabelProvider.java
index 44d1e8394..83f7216df 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/CheckBoxLabelProvider.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/annotation/labelprovider/CheckBoxLabelProvider.java
@@ -14,6 +14,8 @@
  *******************************************************************************/
 package org.fortiss.tooling.base.ui.annotation.labelprovider;
 
+import static org.fortiss.tooling.base.utils.SystemUtils.isMacOSXPlatform;
+
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.EditingSupport;
 import org.eclipse.jface.viewers.TableViewer;
@@ -46,6 +48,12 @@ public class CheckBoxLabelProvider extends AnnotationLabelProvider {
 	/** {@inheritDoc} */
 	@Override
 	public String getText(Object element) {
+		// See #2443
+		if(isMacOSXPlatform() && element instanceof AnnotationEntry &&
+				((AnnotationEntry)element).canEdit(clazz)) {
+			return isChecked(element) ? "[X]" : "[ ]";
+		}
+
 		return null;
 	}
 
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/.ratings
index d76cac35a..21bdf0961 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/.ratings
@@ -1,4 +1,4 @@
 AbstractIntegerSpinnerEditingSupport.java 7391e5b0d8e10baf5ab2c7f9543ed732a23bbd9d GREEN
 CheckBoxEditingSupport.java 173a63ee86dc396946ddb625a41d48ffad23982f GREEN
-CheckBoxLabelProvider.java f810475dbf986b1f33e5b2b13657e52ca0cfd27e GREEN
+CheckBoxLabelProvider.java 4eb2a54a17225da5a0f4f3a4212cde0c23d50d11 YELLOW
 IconNameLabelProvider.java f1700e0c8a86dfe6b10945ce84c2ac935ceab8e7 GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/CheckBoxLabelProvider.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/CheckBoxLabelProvider.java
index f810475db..4eb2a54a1 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/CheckBoxLabelProvider.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/viewers/CheckBoxLabelProvider.java
@@ -17,6 +17,7 @@ package org.fortiss.tooling.base.ui.viewers;
 
 import static org.eclipse.core.runtime.Platform.getBundle;
 import static org.eclipse.jface.resource.JFaceResources.getImageRegistry;
+import static org.fortiss.tooling.base.utils.SystemUtils.isMacOSXPlatform;
 
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.jface.resource.JFaceResources;
@@ -118,6 +119,10 @@ public abstract class CheckBoxLabelProvider extends ColumnLabelProvider {
 	 * @return {@link Image} representing the checkbox.
 	 */
 	public static Image getImage(boolean checked, boolean enabled) {
+		// See #2443
+		if(isMacOSXPlatform()) {
+			return null;
+		}
 		ImageRegistry imgReg = getImageRegistry();
 		if(imgReg.getDescriptor(CHECKED_KEY) == null) {
 			imgReg.put(UNCHECKED_KEY, makeShot(false, true));
@@ -142,6 +147,10 @@ public abstract class CheckBoxLabelProvider extends ColumnLabelProvider {
 	/** {@inheritDoc} */
 	@Override
 	public String getText(Object element) {
+		// See #2443
+		if(isMacOSXPlatform() && isEnabled(element)) {
+			return isChecked(element) ? "[X]" : "[ ]";
+		}
 		return null;
 	}
 
-- 
GitLab