Bug 567214 - [GTK4] GtkLabel set_wrap signature change

- Organized GtkLabel functions
- Removed pre 3.16 comment as we support 3.20 and above
- Added gtk_label_set_wrap & gtk_label_set_wrap_mode as the GTK4
alternative to gtk_label_set_line_wrap & gtk_label_set_line_wrap_mode

Change-Id: I1793112df84d0bf1ca2c3aced758aa5c808989a7
Signed-off-by: Paul D'Pong <sdamrong@redhat.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index b2dc9df..8eafe9a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
@@ -7144,7 +7144,15 @@
 	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
 {
 	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_FUNC);
+/*
 	gtk_label_set_line_wrap((GtkLabel *)arg0, (gboolean)arg1);
+*/
+	{
+		GTK_LOAD_FUNCTION(fp, gtk_label_set_line_wrap)
+		if (fp) {
+			((void (CALLING_CONVENTION*)(GtkLabel *, gboolean))fp)((GtkLabel *)arg0, (gboolean)arg1);
+		}
+	}
 	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_FUNC);
 }
 #endif
@@ -7154,7 +7162,15 @@
 	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
 {
 	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
+/*
 	gtk_label_set_line_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
+*/
+	{
+		GTK_LOAD_FUNCTION(fp, gtk_label_set_line_wrap_mode)
+		if (fp) {
+			((void (CALLING_CONVENTION*)(GtkLabel *, PangoWrapMode))fp)((GtkLabel *)arg0, (PangoWrapMode)arg1);
+		}
+	}
 	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1line_1wrap_1mode_FUNC);
 }
 #endif
@@ -7197,20 +7213,48 @@
 }
 #endif
 
+#ifndef NO_gtk_1label_1set_1wrap
+JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1wrap)
+	(JNIEnv *env, jclass that, jlong arg0, jboolean arg1)
+{
+	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_FUNC);
+/*
+	gtk_label_set_wrap((GtkLabel *)arg0, (gboolean)arg1);
+*/
+	{
+		GTK_LOAD_FUNCTION(fp, gtk_label_set_wrap)
+		if (fp) {
+			((void (CALLING_CONVENTION*)(GtkLabel *, gboolean))fp)((GtkLabel *)arg0, (gboolean)arg1);
+		}
+	}
+	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_FUNC);
+}
+#endif
+
+#ifndef NO_gtk_1label_1set_1wrap_1mode
+JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1wrap_1mode)
+	(JNIEnv *env, jclass that, jlong arg0, jint arg1)
+{
+	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
+/*
+	gtk_label_set_wrap_mode((GtkLabel *)arg0, (PangoWrapMode)arg1);
+*/
+	{
+		GTK_LOAD_FUNCTION(fp, gtk_label_set_wrap_mode)
+		if (fp) {
+			((void (CALLING_CONVENTION*)(GtkLabel *, PangoWrapMode))fp)((GtkLabel *)arg0, (PangoWrapMode)arg1);
+		}
+	}
+	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1wrap_1mode_FUNC);
+}
+#endif
+
 #ifndef NO_gtk_1label_1set_1xalign
 JNIEXPORT void JNICALL GTK_NATIVE(gtk_1label_1set_1xalign)
 	(JNIEnv *env, jclass that, jlong arg0, jfloat arg1)
 {
 	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1xalign_FUNC);
-/*
 	gtk_label_set_xalign((GtkLabel *)arg0, (gfloat)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_xalign)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, gfloat))fp)((GtkLabel *)arg0, (gfloat)arg1);
-		}
-	}
 	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1xalign_FUNC);
 }
 #endif
@@ -7220,15 +7264,7 @@
 	(JNIEnv *env, jclass that, jlong arg0, jfloat arg1)
 {
 	GTK_NATIVE_ENTER(env, that, gtk_1label_1set_1yalign_FUNC);
-/*
 	gtk_label_set_yalign((GtkLabel *)arg0, (gfloat)arg1);
-*/
-	{
-		GTK_LOAD_FUNCTION(fp, gtk_label_set_yalign)
-		if (fp) {
-			((void (CALLING_CONVENTION*)(GtkLabel *, gfloat))fp)((GtkLabel *)arg0, (gfloat)arg1);
-		}
-	}
 	GTK_NATIVE_EXIT(env, that, gtk_1label_1set_1yalign_FUNC);
 }
 #endif
diff --git a/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 eb04f12..5f113aa 100644
--- a/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
@@ -567,6 +567,8 @@
 	"gtk_1label_1set_1text__JJ",
 	"gtk_1label_1set_1text__J_3B",
 	"gtk_1label_1set_1text_1with_1mnemonic",
+	"gtk_1label_1set_1wrap",
+	"gtk_1label_1set_1wrap_1mode",
 	"gtk_1label_1set_1xalign",
 	"gtk_1label_1set_1yalign",
 	"gtk_1list_1store_1append",
diff --git a/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 25eba73..ba5f5ca 100644
--- a/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
@@ -565,6 +565,8 @@
 	gtk_1label_1set_1text__JJ_FUNC,
 	gtk_1label_1set_1text__J_3B_FUNC,
 	gtk_1label_1set_1text_1with_1mnemonic_FUNC,
+	gtk_1label_1set_1wrap_FUNC,
+	gtk_1label_1set_1wrap_1mode_FUNC,
 	gtk_1label_1set_1xalign_FUNC,
 	gtk_1label_1set_1yalign_FUNC,
 	gtk_1list_1store_1append_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
index aade800..14598bb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GTK.java
@@ -1276,22 +1276,6 @@
 	 * @param expand cast=(gboolean)
 	 */
 	public static final native void gtk_widget_set_vexpand(long widget, boolean expand);
-	//since Gtk 3.16. For pre-gtk3.16, use gtk_misc_set_alignment(..)
-	/**
-	 * @method flags=dynamic
-	 * @param label cast=(GtkLabel *)
-	 * @param xalign cast=(gfloat)
-	 *
-	 */
-	public static final native void gtk_label_set_xalign(long label, float xalign);
-	//since Gtk 3.16. For pre-gtk3.16, use gtk_misc_set_alignment(..)
-	/**
-	* @method flags=dynamic
-	* @param label cast=(GtkLabel *)
-	* @param yalign cast=(gfloat)
-	*
-	*/
-	public static final native void gtk_label_set_yalign(long label, float yalign);
 	/**
 	 * @param widget cast=(GtkWidget *)
 	 * @param gtk_align cast=(GtkAlign)
@@ -1565,15 +1549,17 @@
 	 */
 	/* [GTK4 only] */
 	public static final native boolean gtk_init_check();
-	/** @param label cast=(GtkLabel *) */
-	public static final native long gtk_label_get_layout(long label);
+
+	/* GtkLabel */
 	public static final native long gtk_label_get_type();
-	/** @param label cast=(GtkLabel *) */
-	public static final native int gtk_label_get_mnemonic_keyval(long label);
 	/** @param label cast=(const gchar *) */
 	public static final native long gtk_label_new(byte[] label);
 	/** @param str cast=(const gchar *) */
 	public static final native long gtk_label_new_with_mnemonic(byte[] str);
+	/** @param label cast=(GtkLabel *) */
+	public static final native long gtk_label_get_layout(long label);
+	/** @param label cast=(GtkLabel *) */
+	public static final native int gtk_label_get_mnemonic_keyval(long label);
 	/**
 	 * @param label cast=(GtkLabel *)
 	 * @param attrs cast=(PangoAttrList *)
@@ -1586,16 +1572,6 @@
 	public static final native void gtk_label_set_justify(long label, int jtype);
 	/**
 	 * @param label cast=(GtkLabel *)
-	 * @param wrap cast=(gboolean)
-	 */
-	public static final native void gtk_label_set_line_wrap(long label, boolean wrap);
-	/**
-	 * @param label cast=(GtkLabel *)
-	 * @param wrap_mode cast=(PangoWrapMode)
-	 */
-	public static final native void gtk_label_set_line_wrap_mode(long label, int wrap_mode);
-	/**
-	 * @param label cast=(GtkLabel *)
 	 * @param str cast=(const gchar *)
 	 */
 	public static final native void gtk_label_set_text(long label, long str);
@@ -1610,6 +1586,48 @@
 	 */
 	public static final native void gtk_label_set_text_with_mnemonic(long label, byte[] str);
 	/**
+	 * @param label cast=(GtkLabel *)
+	 * @param xalign cast=(gfloat)
+	 *
+	 */
+	public static final native void gtk_label_set_xalign(long label, float xalign);
+	/**
+	* @param label cast=(GtkLabel *)
+	* @param yalign cast=(gfloat)
+	*
+	*/
+	public static final native void gtk_label_set_yalign(long label, float yalign);
+
+	/* GtkLabel [GTK3 only] */
+	/**
+	 * @method flags=dynamic
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap cast=(gboolean)
+	 */
+	public static final native void gtk_label_set_line_wrap(long label, boolean wrap);
+	/**
+	 * @method flags=dynamic
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap_mode cast=(PangoWrapMode)
+	 */
+	public static final native void gtk_label_set_line_wrap_mode(long label, int wrap_mode);
+
+	/* GtkLabel [GTK4 only] */
+	/**
+	 * @method flags=dynamic
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap cast=(gboolean)
+	 */
+	public static final native void gtk_label_set_wrap(long label, boolean wrap);
+	/**
+	 * @method flags=dynamic
+	 * @param label cast=(GtkLabel *)
+	 * @param wrap_mode cast=(PangoWrapMode)
+	 */
+	public static final native void gtk_label_set_wrap_mode(long label, int wrap_mode);
+
+
+	/**
 	 * @param list_store cast=(GtkListStore *)
 	 * @param iter cast=(GtkTreeIter *)
 	 */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
index b5ef710..b521508 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Button.java
@@ -379,8 +379,13 @@
 		}
 
 		if ((style & SWT.WRAP) != 0) {
-			GTK.gtk_label_set_line_wrap (labelHandle, true);
-			GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+			if (GTK.GTK4) {
+				GTK.gtk_label_set_wrap(labelHandle, true);
+				GTK.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+			} else {
+				GTK.gtk_label_set_line_wrap (labelHandle, true);
+				GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+			}
 		}
 	}
 	if (GTK.GTK4) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
index b3e6fb8..05d4bd3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DirectoryDialog.java
@@ -164,22 +164,24 @@
 		}
 	}
 	if (message.length () > 0) {
-		byte [] buffer = Converter.wcsToMbcs (message, true);
-		long box = GTK.gtk_box_new (GTK.GTK_ORIENTATION_HORIZONTAL, 0);
-		GTK.gtk_box_set_homogeneous (box, false);
-		if (box == 0) error (SWT.ERROR_NO_HANDLES);
+		byte[] buffer = Converter.wcsToMbcs(message, true);
+		long box = GTK.gtk_box_new(GTK.GTK_ORIENTATION_HORIZONTAL, 0);
+		if (box == 0) error(SWT.ERROR_NO_HANDLES);
 		long label = GTK.gtk_label_new (buffer);
-		if (label == 0) error (SWT.ERROR_NO_HANDLES);
+		if (label == 0) error(SWT.ERROR_NO_HANDLES);
+
 		if (GTK.GTK4) {
 			GTK.gtk_box_append(box, label);
+			GTK.gtk_label_set_wrap(label, true);
 		} else {
-			GTK.gtk_container_add (box, label);
-			GTK.gtk_widget_show (label);
+			GTK.gtk_container_add(box, label);
+			GTK.gtk_widget_show(label);
+			GTK.gtk_label_set_line_wrap(label, true);
 		}
 
-		GTK.gtk_label_set_line_wrap (label, true);
-		GTK.gtk_label_set_justify (label, GTK.GTK_JUSTIFY_CENTER);
-		GTK.gtk_file_chooser_set_extra_widget (handle, box);
+		GTK.gtk_box_set_homogeneous(box, false);
+		GTK.gtk_label_set_justify(label, GTK.GTK_JUSTIFY_CENTER);
+		GTK.gtk_file_chooser_set_extra_widget(handle, box);
 	}
 	String answer = null;
 	display.addIdleProc ();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
index ea1cd2d..b7ad6ba 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java
@@ -290,8 +290,13 @@
 	}
 	if ((style & SWT.SEPARATOR) != 0) return;
 	if ((style & SWT.WRAP) != 0) {
-		GTK.gtk_label_set_line_wrap (labelHandle, true);
-		GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+		if (GTK.GTK4) {
+			GTK.gtk_label_set_wrap(labelHandle, true);
+			GTK.gtk_label_set_wrap_mode(labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+		} else {
+			GTK.gtk_label_set_line_wrap (labelHandle, true);
+			GTK.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR);
+		}
 	}
 	// In GTK 3 font description is inherited from parent widget which is not how SWT has always worked,
 	// reset to default font to get the usual behavior