Blob Blame History Raw
From eec69d54257dd905a06e43fb705f40df9326414e Mon Sep 17 00:00:00 2001
From: Alexander Kurtakov
Date: Fri, 20 Nov 2015 13:24:54 +0200
Subject: Bug 466314 - [GTK3] Text in Forms abbreviated

Switching from gtk_text_view_scroll_mark_onscreen to
gtk_text_view_scroll_to_mark gives us total control over the alignment
allowing us to alway position to the 0 0.

Change-Id: I4fc141980e96c81cf65ef076a0224f0e4eee47ba
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
---
 .../org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c  | 20 ++++++++++----------
 .../Eclipse SWT PI/gtk/library/os_stats.c            |  2 +-
 .../Eclipse SWT PI/gtk/library/os_stats.h            |  2 +-
 .../gtk/org/eclipse/swt/internal/gtk/OS.java         | 10 +++++++---
 .../gtk/org/eclipse/swt/widgets/Text.java            | 12 ++++++------
 5 files changed, 25 insertions(+), 21 deletions(-)

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 7e937f0..c0dff7f 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	
@@ -16167,16 +16167,6 @@ JNIEXPORT jintLong JNICALL OS_NATIVE(_1gtk_1text_1view_1new)
 }
 #endif
 
-#ifndef NO__1gtk_1text_1view_1scroll_1mark_1onscreen
-JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1mark_1onscreen)
-	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1)
-{
-	OS_NATIVE_ENTER(env, that, _1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC);
-	gtk_text_view_scroll_mark_onscreen((GtkTextView *)arg0, (GtkTextMark *)arg1);
-	OS_NATIVE_EXIT(env, that, _1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC);
-}
-#endif
-
 #ifndef NO__1gtk_1text_1view_1scroll_1to_1iter
 JNIEXPORT jboolean JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1to_1iter)
 	(JNIEnv *env, jclass that, jintLong arg0, jbyteArray arg1, jdouble arg2, jboolean arg3, jdouble arg4, jdouble arg5)
@@ -16193,6 +16183,16 @@ fail:
 }
 #endif
 
+#ifndef NO__1gtk_1text_1view_1scroll_1to_1mark
+JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1scroll_1to_1mark)
+	(JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jdouble arg2, jboolean arg3, jdouble arg4, jdouble arg5)
+{
+	OS_NATIVE_ENTER(env, that, _1gtk_1text_1view_1scroll_1to_1mark_FUNC);
+	gtk_text_view_scroll_to_mark((GtkTextView *)arg0, (GtkTextMark *)arg1, (gdouble)arg2, (gboolean)arg3, (gdouble)arg4, (gdouble)arg5);
+	OS_NATIVE_EXIT(env, that, _1gtk_1text_1view_1scroll_1to_1mark_FUNC);
+}
+#endif
+
 #ifndef NO__1gtk_1text_1view_1set_1editable
 JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1text_1view_1set_1editable)
 	(JNIEnv *env, jclass that, jintLong arg0, jboolean 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 82775bd..bd9d7b5 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	
@@ -1183,8 +1183,8 @@ char * OS_nativeFunctionNames[] = {
 	"_1gtk_1text_1view_1get_1visible_1rect",
 	"_1gtk_1text_1view_1get_1window",
 	"_1gtk_1text_1view_1new",
-	"_1gtk_1text_1view_1scroll_1mark_1onscreen",
 	"_1gtk_1text_1view_1scroll_1to_1iter",
+	"_1gtk_1text_1view_1scroll_1to_1mark",
 	"_1gtk_1text_1view_1set_1editable",
 	"_1gtk_1text_1view_1set_1justification",
 	"_1gtk_1text_1view_1set_1tabs",
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 a1d68ed..016b472 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	
@@ -1193,8 +1193,8 @@ typedef enum {
 	_1gtk_1text_1view_1get_1visible_1rect_FUNC,
 	_1gtk_1text_1view_1get_1window_FUNC,
 	_1gtk_1text_1view_1new_FUNC,
-	_1gtk_1text_1view_1scroll_1mark_1onscreen_FUNC,
 	_1gtk_1text_1view_1scroll_1to_1iter_FUNC,
+	_1gtk_1text_1view_1scroll_1to_1mark_FUNC,
 	_1gtk_1text_1view_1set_1editable_FUNC,
 	_1gtk_1text_1view_1set_1justification_FUNC,
 	_1gtk_1text_1view_1set_1tabs_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 cf8cda6..0ee6dda 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	
@@ -12528,12 +12528,16 @@ public static final long /*int*/ gtk_text_view_new() {
 /**
  * @param text_view cast=(GtkTextView *)
  * @param mark cast=(GtkTextMark *)
+ * @param within_margin cast=(gdouble)
+ * @param use_align cast=(gboolean)
+ * @param xalign cast=(gdouble)
+ * @param yalign cast=(gdouble)
  */
-public static final native void _gtk_text_view_scroll_mark_onscreen(long /*int*/ text_view, long /*int*/ mark);
-public static final void gtk_text_view_scroll_mark_onscreen(long /*int*/ text_view, long /*int*/ mark) {
+public static final native void _gtk_text_view_scroll_to_mark(long /*int*/ text_view, long /*int*/ mark, double within_margin, boolean use_align, double xalign, double yalign);
+public static final void gtk_text_view_scroll_to_mark(long /*int*/ text_view, long /*int*/ mark, double within_margin, boolean use_align, double xalign, double yalign) {
 	lock.lock();
 	try {
-		_gtk_text_view_scroll_mark_onscreen(text_view, mark);
+		_gtk_text_view_scroll_to_mark(text_view, mark, within_margin, use_align, xalign, yalign);
 	} finally {
 		lock.unlock();
 	}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java
index 9aa3a52..2865cd5 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java	
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java	
@@ -414,7 +414,7 @@ public void append (String string) {
 		OS.gtk_text_buffer_insert (bufferHandle, position, buffer, buffer.length);
 		OS.gtk_text_buffer_place_cursor (bufferHandle, position);
 		long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
-		OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+		OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 	}
 	applySegments ();
 }
@@ -1947,7 +1947,7 @@ public void insert (String string) {
 		OS.gtk_text_buffer_insert (bufferHandle, start, buffer, buffer.length);
 		OS.gtk_text_buffer_place_cursor (bufferHandle, start);
 		long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
-		OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+		OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 	}
 	applySegments ();
 }
@@ -2340,7 +2340,7 @@ public void setSelection (int start) {
 		OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, startIter, start);
 		OS.gtk_text_buffer_place_cursor (bufferHandle, startIter);
 		long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
-		OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+		OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 	}
 }
 
@@ -2563,7 +2563,7 @@ void setText (char [] text) {
 		OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, position, 0);
 		OS.gtk_text_buffer_place_cursor (bufferHandle, position);
 		long /*int*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle);
-		OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+		OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 		Arrays.fill (buffer, (byte) 0);
 	}
 	sendEvent (SWT.Modify);
@@ -2644,9 +2644,9 @@ public void showSelection () {
 	checkWidget ();
 	if ((style & SWT.SINGLE) != 0) return;
 	long /*int*/ mark = OS.gtk_text_buffer_get_selection_bound (bufferHandle);
-	OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+	OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 	mark = OS.gtk_text_buffer_get_insert (bufferHandle);
-	OS.gtk_text_view_scroll_mark_onscreen (handle, mark);
+	OS.gtk_text_view_scroll_to_mark (handle, mark, 0, true, 0, 0);
 }
 
 int translateOffset (int offset) {
-- 
cgit v0.11.2-4-g4a35