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 --- .../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