Blob Blame History Raw
From fa50d3f2eca0386f99312210ce0d759d45631ef4 Mon Sep 17 00:00:00 2001
From: Alexander Kurtakov
Date: Mon, 27 Nov 2017 14:26:02 +0200
Subject: Bug 527693 - [Wayland] TextTransfer crash (libX11.so) due to an x11
 call gdk_x11_display_utf8_to_compound_text

Compound text is dead technology and fully obsoleted by UTF actually. Do
not claim support for it if not on X11. This should fix the crash.

Change-Id: Id4df68bc3e2052eee88f22a3b06c94537cc6899a
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
---
 .../gtk/org/eclipse/swt/dnd/TextTransfer.java                | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/eclipse.platform.swtbundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java
index 5da8f52..6148efb 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java	
@@ -72,7 +72,7 @@ public void javaToNative (Object object, TransferData transferData) {
 	}
 	String string = (String)object;
 	byte[] utf8 = Converter.wcsToMbcs (string, true);
-	if  (transferData.type ==  COMPOUND_TEXT_ID) {
+	if  (OS.isX11() && transferData.type ==  COMPOUND_TEXT_ID) {
 		long /*int*/[] encoding = new long /*int*/[1];
 		int[] format = new int[1];
 		long /*int*/[] ctext = new long /*int*/[1];
@@ -136,12 +136,18 @@ public Object nativeToJava(TransferData transferData){
 
 @Override
 protected int[] getTypeIds() {
-	return new int[] {UTF8_STRING_ID, COMPOUND_TEXT_ID, STRING_ID};
+	if (OS.isX11()) {
+		return new int[] {UTF8_STRING_ID, COMPOUND_TEXT_ID, STRING_ID};
+	}
+	return new int[] {UTF8_STRING_ID, STRING_ID};
 }
 
 @Override
 protected String[] getTypeNames() {
-	return new String[] {UTF8_STRING, COMPOUND_TEXT, STRING};
+	if (OS.isX11()) {
+		return new String[] {UTF8_STRING, COMPOUND_TEXT, STRING};
+	}
+	return new String[] {UTF8_STRING, STRING};
 }
 
 boolean checkText(Object object) {
-- 
cgit v1.1