172792 - Pressing Ctrl+PageUp or PageDown in Search Window crashes JVM
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.gtk.OS.properties b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.gtk.OS.properties
index 9bb59c0..ac8b635 100644
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.gtk.OS.properties
+++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/org.eclipse.swt.internal.gtk.OS.properties
@@ -2976,6 +2976,12 @@
 
 OS__gtk_notebook_new=
 
+OS__gtk_notebook_next_page=
+OS__gtk_notebook_next_page_0=cast=(GtkNotebook *)
+
+OS__gtk_notebook_prev_page=
+OS__gtk_notebook_prev_page_0=cast=(GtkNotebook *)
+
 OS__gtk_notebook_remove_page=
 OS__gtk_notebook_remove_page_0=cast=(GtkNotebook *)
 OS__gtk_notebook_remove_page_1=cast=(gint)
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 0e0b897..5f8b03b 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
@@ -9200,6 +9200,26 @@
 }
 #endif
 
+#ifndef NO__1gtk_1notebook_1next_1page
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1notebook_1next_1page)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1notebook_1next_1page_FUNC);
+	gtk_notebook_next_page((GtkNotebook *)arg0);
+	OS_NATIVE_EXIT(env, that, _1gtk_1notebook_1next_1page_FUNC);
+}
+#endif
+
+#ifndef NO__1gtk_1notebook_1prev_1page
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1notebook_1prev_1page)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1notebook_1prev_1page_FUNC);
+	gtk_notebook_prev_page((GtkNotebook *)arg0);
+	OS_NATIVE_EXIT(env, that, _1gtk_1notebook_1prev_1page_FUNC);
+}
+#endif
+
 #ifndef NO__1gtk_1notebook_1remove_1page
 JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1notebook_1remove_1page)
 	(JNIEnv *env, jclass that, jint arg0, jint arg1)
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 b935378..8060f32 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
@@ -18,8 +18,8 @@
 
 #ifdef NATIVE_STATS
 
-int OS_nativeFunctionCount = 1208;
-int OS_nativeFunctionCallCount[1208];
+int OS_nativeFunctionCount = 1210;
+int OS_nativeFunctionCallCount[1210];
 char * OS_nativeFunctionNames[] = {
 	"Call",
 	"GDK_1EVENT_1TYPE",
@@ -674,6 +674,8 @@
 	"_1gtk_1notebook_1get_1scrollable",
 	"_1gtk_1notebook_1insert_1page",
 	"_1gtk_1notebook_1new",
+	"_1gtk_1notebook_1next_1page",
+	"_1gtk_1notebook_1prev_1page",
 	"_1gtk_1notebook_1remove_1page",
 	"_1gtk_1notebook_1set_1current_1page",
 	"_1gtk_1notebook_1set_1scrollable",
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 437f379..f076ef8 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
@@ -682,6 +682,8 @@
 	_1gtk_1notebook_1get_1scrollable_FUNC,
 	_1gtk_1notebook_1insert_1page_FUNC,
 	_1gtk_1notebook_1new_FUNC,
+	_1gtk_1notebook_1next_1page_FUNC,
+	_1gtk_1notebook_1prev_1page_FUNC,
 	_1gtk_1notebook_1remove_1page_FUNC,
 	_1gtk_1notebook_1set_1current_1page_FUNC,
 	_1gtk_1notebook_1set_1scrollable_FUNC,
diff --git a/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 83ba87c..23fcfcf 100644
--- a/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
@@ -5735,6 +5735,24 @@
 		lock.unlock();
 	}
 }
+public static final native void _gtk_notebook_next_page(int /*long*/ notebook);
+public static final void gtk_notebook_next_page(int /*long*/ notebook) {
+	lock.lock();
+	try {
+		_gtk_notebook_next_page(notebook);
+	} finally {
+		lock.unlock();
+	}
+}
+public static final native void _gtk_notebook_prev_page(int /*long*/ notebook);
+public static final void gtk_notebook_prev_page(int /*long*/ notebook) {
+	lock.lock();
+	try {
+		_gtk_notebook_prev_page(notebook);
+	} finally {
+		lock.unlock();
+	}
+}
 public static final native void _gtk_notebook_remove_page(int /*long*/ notebook, int page_num);
 public static final void gtk_notebook_remove_page(int /*long*/ notebook, int page_num) {
 	lock.lock();
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
index 847f29f..90b5726 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/TabFolder.java
@@ -679,8 +679,12 @@
 	}
 }
 
-boolean traversePage (boolean next) {
-	OS.g_signal_emit_by_name (handle, OS.change_current_page, next ? 1 : -1);
+boolean traversePage (final boolean next) {
+	if (next) {
+		OS.gtk_notebook_next_page (handle);
+	} else {
+		OS.gtk_notebook_prev_page (handle);
+	}
 	return true;
 }