diff options
author | Alexander Kurtakov <akurtako@redhat.com> | 2013-07-11 16:21:18 +0300 |
---|---|---|
committer | Alexander Kurtakov <akurtako@redhat.com> | 2013-07-11 16:21:18 +0300 |
commit | 3bd130c31bf829e2454963f915aed0e3e9db5b5b (patch) | |
tree | d5b0a5796326f9bf04e6205af41ff8e72764b3f0 /bundles/org.eclipse.swt/Eclipse SWT | |
parent | b2aec83df14dd2f80829ffc496ee04062a7a05e2 (diff) | |
download | eclipse.platform.swt-3bd130c31bf829e2454963f915aed0e3e9db5b5b.tar.gz eclipse.platform.swt-3bd130c31bf829e2454963f915aed0e3e9db5b5b.tar.xz eclipse.platform.swt-3bd130c31bf829e2454963f915aed0e3e9db5b5b.zip |
Use gtk_text_buffer_select_range instead of gtk_text_buffer_move_mark.
gtk_text_buffer_select_range exists since GTK 2.4 and is an optimized
way to do selection as reduces GTK recalculations. It has additional
benefit for SWT as it reduces the JNI overhead too - 3-4 function call
become a single one.
Bug 412758 .
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Text.java | 14 |
1 files changed, 3 insertions, 11 deletions
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 4aa53ead4a..dd960b52d6 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 @@ -524,10 +524,8 @@ public void clearSelection () { } else { byte [] position = new byte [ITER_SIZEOF]; long /*int*/ insertMark = OS.gtk_text_buffer_get_insert (bufferHandle); - long /*int*/ selectionMark = OS.gtk_text_buffer_get_selection_bound (bufferHandle); OS.gtk_text_buffer_get_iter_at_mark (bufferHandle, position, insertMark); - OS.gtk_text_buffer_move_mark (bufferHandle, selectionMark, position); - OS.gtk_text_buffer_move_mark (bufferHandle, insertMark, position); + OS.gtk_text_buffer_select_range(bufferHandle, position, position); } } @@ -2079,10 +2077,7 @@ public void selectAll () { byte [] end = new byte [ITER_SIZEOF]; OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, start, 0); OS.gtk_text_buffer_get_end_iter (bufferHandle, end); - long /*int*/ insertMark = OS.gtk_text_buffer_get_insert (bufferHandle); - long /*int*/ selectionMark = OS.gtk_text_buffer_get_selection_bound (bufferHandle); - OS.gtk_text_buffer_move_mark (bufferHandle, selectionMark, start); - OS.gtk_text_buffer_move_mark (bufferHandle, insertMark, end); + OS.gtk_text_buffer_select_range(bufferHandle, start, end); } } @@ -2333,10 +2328,7 @@ public void setSelection (int start, int end) { OS.g_free (ptr); OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, startIter, start); OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, endIter, end); - long /*int*/ insertMark = OS.gtk_text_buffer_get_insert (bufferHandle); - long /*int*/ selectionMark = OS.gtk_text_buffer_get_selection_bound (bufferHandle); - OS.gtk_text_buffer_move_mark (bufferHandle, selectionMark, startIter); - OS.gtk_text_buffer_move_mark (bufferHandle, insertMark, endIter); + OS.gtk_text_buffer_select_range(bufferHandle, startIter, endIter); } } |