diff options
author | Felipe Heidrich <fheidric> | 2011-03-23 19:14:54 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2011-03-23 19:14:54 +0000 |
commit | 55a22ab9240db91b3cefd3f1694927c9a71b6ad8 (patch) | |
tree | c0f0d91992237f5677665cfd409ce5b6dca0efc7 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java | |
parent | 56201926f64ad6ea7f48b4affd1bb7e12a2c8db2 (diff) | |
download | eclipse.platform.swt-55a22ab9240db91b3cefd3f1694927c9a71b6ad8.tar.gz eclipse.platform.swt-55a22ab9240db91b3cefd3f1694927c9a71b6ad8.tar.xz eclipse.platform.swt-55a22ab9240db91b3cefd3f1694927c9a71b6ad8.zip |
Bug 65899 - [StyledText] StyledText Supplementary/Surrogate character navigation
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java index 571a79122f..e64f86b890 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Spinner.java @@ -647,8 +647,11 @@ int /*long*/ gtk_commit (int /*long*/ imContext, int /*long*/ text) { int /*long*/ gtk_delete_text (int /*long*/ widget, int /*long*/ start_pos, int /*long*/ end_pos) { if (!hooks (SWT.Verify) && !filters (SWT.Verify)) return 0; - if (end_pos == -1) end_pos = OS.g_utf8_strlen (OS.gtk_entry_get_text (handle), -1); - String newText = verifyText ("", (int)/*64*/start_pos, (int)/*64*/end_pos); + int /*long*/ ptr = OS.gtk_entry_get_text (handle); + if (end_pos == -1) end_pos = OS.g_utf8_strlen (ptr, -1); + int start = (int)/*64*/OS.g_utf8_offset_to_utf16_offset (ptr, start_pos); + int end = (int)/*64*/OS.g_utf8_offset_to_utf16_offset (ptr, end_pos); + String newText = verifyText ("", start, end); if (newText == null) { OS.g_signal_stop_emission_by_name (handle, OS.delete_text); } else { @@ -685,11 +688,10 @@ int /*long*/ gtk_insert_text (int /*long*/ widget, int /*long*/ new_text, int /* String oldText = new String (Converter.mbcsToWcs (null, buffer)); int [] pos = new int [1]; OS.memmove (pos, position, 4); - if (pos [0] == -1) { - int /*long*/ ptr = OS.gtk_entry_get_text (handle); - pos [0] = (int)/*64*/OS.g_utf8_strlen (ptr, -1); - } - String newText = verifyText (oldText, pos [0], pos [0]); + int /*long*/ ptr = OS.gtk_entry_get_text (handle); + if (pos [0] == -1) pos [0] = (int)/*64*/OS.g_utf8_strlen (ptr, -1); + int start = (int)/*64*/OS.g_utf16_pointer_to_offset (ptr, pos [0]); + String newText = verifyText (oldText, start, start); if (newText != oldText) { int [] newStart = new int [1], newEnd = new int [1]; OS.gtk_editable_get_selection_bounds (handle, newStart, newEnd); |