Blob Blame History Raw
From faa3866df482c0e42ac5b308a5551882f833a3aa Mon Sep 17 00:00:00 2001
From: Alexander Kurtakov
Date: Thu, 10 Jul 2014 09:06:28 +0300
Subject: Bug 438992 - Combo dropdown has empty space at top

Setting wrap_width also trims the empty whitespace on top for combo
popup.

Change-Id: I073d1ccef913de8f1ccfa0ff1eb09538606f8f74
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>

diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index 89185b9..813f451 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c	
@@ -9970,6 +9970,16 @@ JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1combo_1box_1set_1focus_1on_1click)
 }
 #endif
 
+#ifndef NO__1gtk_1combo_1box_1set_1wrap_1width
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1combo_1box_1set_1wrap_1width)
+	(JNIEnv *env, jclass that, jintLong arg0, jint arg1)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1combo_1box_1set_1wrap_1width_FUNC);
+	gtk_combo_box_set_wrap_width((GtkComboBox *)arg0, (gint)arg1);
+	OS_NATIVE_EXIT(env, that, _1gtk_1combo_1box_1set_1wrap_1width_FUNC);
+}
+#endif
+
 #ifndef NO__1gtk_1combo_1box_1text_1insert
 JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1combo_1box_1text_1insert)
 	(JNIEnv *env, jclass that, jintLong arg0, jint arg1, jbyteArray arg2, jbyteArray arg3)
diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index fefc07e..16d6664 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c	
@@ -723,6 +723,7 @@ char * OS_nativeFunctionNames[] = {
 	"_1gtk_1combo_1box_1remove_1text",
 	"_1gtk_1combo_1box_1set_1active",
 	"_1gtk_1combo_1box_1set_1focus_1on_1click",
+	"_1gtk_1combo_1box_1set_1wrap_1width",
 	"_1gtk_1combo_1box_1text_1insert",
 	"_1gtk_1combo_1box_1text_1new",
 	"_1gtk_1combo_1box_1text_1new_1with_1entry",
diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index aa408c5..78460d0 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h	
@@ -733,6 +733,7 @@ typedef enum {
 	_1gtk_1combo_1box_1remove_1text_FUNC,
 	_1gtk_1combo_1box_1set_1active_FUNC,
 	_1gtk_1combo_1box_1set_1focus_1on_1click_FUNC,
+	_1gtk_1combo_1box_1set_1wrap_1width_FUNC,
 	_1gtk_1combo_1box_1text_1insert_FUNC,
 	_1gtk_1combo_1box_1text_1new_FUNC,
 	_1gtk_1combo_1box_1text_1new_1with_1entry_FUNC,
diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
index b531bf9..ab42819 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java	
@@ -7135,6 +7135,19 @@ public static final void gtk_combo_box_set_active(long /*int*/ combo_box, int in
 		lock.unlock();
 	}
 }
+/**
+ * @param combo_box cast=(GtkComboBox *)
+ * @param width cast=(gint)
+ */
+public static final native void _gtk_combo_box_set_wrap_width(long /*int*/ combo_box, int width);
+public static final void gtk_combo_box_set_wrap_width(long /*int*/ combo_box, int width) {
+	lock.lock();
+	try {
+		_gtk_combo_box_set_wrap_width(combo_box, width);
+	} finally {
+		lock.unlock();
+	}
+}
 /** @method flags=dynamic */
 public static final native int _gtk_combo_box_get_active(long /*int*/ combo_box);
 public static final int gtk_combo_box_get_active(long /*int*/ combo_box) {
diff --git a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java
index ea5a93e..6589c9e 100644
--- a/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java	
+++ b/eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Combo.java	
@@ -455,6 +455,8 @@ void createHandle (int index) {
 		if (handle == 0) error (SWT.ERROR_NO_HANDLES);
 		cellHandle = OS.gtk_bin_get_child (handle);
 		if (cellHandle == 0) error (SWT.ERROR_NO_HANDLES);
+		// Setting wrap width has the side effect of removing the whitespace on top in popup bug#438992
+		OS.gtk_combo_box_set_wrap_width(handle, 1);
 	} else {
 		if (OS.GTK3) {
 			handle = OS.gtk_combo_box_text_new_with_entry();
-- 
cgit v0.10.1-9-gd18e