diff options
author | Felipe Heidrich <Felipe_Heidrich@ca.ibm.com> | 2012-02-24 14:19:18 -0500 |
---|---|---|
committer | Felipe Heidrich <Felipe_Heidrich@ca.ibm.com> | 2012-02-24 14:19:18 -0500 |
commit | baeb2750ab3cd98721ca3f9c69fc2805adaf6cf2 (patch) | |
tree | a0b30073fa8e6ba6e678da10264e550cc37878f4 /bundles | |
parent | bda61fcf4d94db1af2718e1a5f14c99c4ec12c81 (diff) | |
download | eclipse.platform.swt-baeb2750ab3cd98721ca3f9c69fc2805adaf6cf2.tar.gz eclipse.platform.swt-baeb2750ab3cd98721ca3f9c69fc2805adaf6cf2.tar.xz eclipse.platform.swt-baeb2750ab3cd98721ca3f9c69fc2805adaf6cf2.zip |
review bug230854, changes to API, fix code to handle surrogates in linux, other fixes
Diffstat (limited to 'bundles')
11 files changed, 96 insertions, 70 deletions
diff --git a/bundles/org.eclipse.swt/.settings/.api_filters b/bundles/org.eclipse.swt/.settings/.api_filters index 49f59bb74e..b3d357d894 100644 --- a/bundles/org.eclipse.swt/.settings/.api_filters +++ b/bundles/org.eclipse.swt/.settings/.api_filters @@ -630,6 +630,14 @@ </message_arguments> </filter> </resource> +<resource path="Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java" type="org.eclipse.swt.events.SegmentListener"> +<filter id="576720909"> +<message_arguments> +<message_argument value="SWTEventListener"/> +<message_argument value="SegmentListener"/> +</message_arguments> +</filter> +</resource> <resource path="Eclipse SWT/common/org/eclipse/swt/events/SelectionListener.java" type="org.eclipse.swt.events.SelectionListener"> <filter id="576720909"> <message_arguments> diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java index 47e655a880..b688cb6368 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentEvent.java @@ -60,7 +60,7 @@ import org.eclipse.swt.events.*; * </pre> * * <p> - * The segments and segementsChars fields can be used together to obtain different + * The segments and segmentsChars fields can be used together to obtain different * types of bidi reordering and text display. The application can use these two fields * to insert Unicode Control Characters in specific offsets in the line, the character * at segmentsChars[i] is inserted at the offset specified by segments[i]. When both fields @@ -75,21 +75,9 @@ import org.eclipse.swt.events.*; */ public class BidiSegmentEvent extends SegmentEvent { - /** - * line start offset - */ - public int lineOffset; - - /** - * line text - */ - public String lineText; - - static final long serialVersionUID = 3257846571587547957L; + static final long serialVersionUID = -3712986188155944253L; BidiSegmentEvent(StyledTextEvent e) { super(e); - lineOffset = e.detail; - lineText = e.text; } } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java index e1d9770623..1e7e196fc3 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/BidiSegmentListener.java @@ -26,8 +26,8 @@ public interface BidiSegmentListener extends SWTEventListener { * The following event fields are used:<ul> * <li>event.lineOffset line start offset (input)</li> * <li>event.lineText line text (input)</li> - * <li>event.segments text segments that should be reordered - * separately. (output)</li> + * <li>event.segments text segments that should be reordered separately (output)</li> + * <li>event.segmentsChars characters that should be inserted (output)</li> * </ul> * * @param event the given event diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java index 98ee4ef27e..435fa651c1 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledTextEvent.java @@ -29,9 +29,6 @@ class StyledTextEvent extends Event { int[] tabStops; // used by LineBackgroundEvent Color lineBackground; - // used by BidiSegmentEvent - int[] segments; - char[] segmentsChars; // used by TextChangedEvent int replaceCharCount; int newCharCount; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java index 27e5184e07..89e448a148 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Text.java @@ -190,6 +190,12 @@ public void addModifyListener (ModifyListener listener) { addListener (SWT.Modify, typedListener); } +public void addSegmentListener (SegmentListener listener) { + checkWidget (); + if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); + addListener (SWT.Segments, new TypedListener (listener)); +} + /** * Adds the listener to the collection of listeners who will * be notified when the control is selected by the user, by sending @@ -1457,6 +1463,12 @@ public void removeModifyListener (ModifyListener listener) { eventTable.unhook (SWT.Modify, listener); } +public void removeSegmentListener (SegmentListener listener) { + checkWidget (); + if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); + eventTable.unhook (SWT.Segments, listener); +} + /** * Removes the listener from the collection of listeners who will * be notified when the control is selected by the user. diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java index 16c287e1f6..ca2a46a3fd 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java @@ -749,7 +749,7 @@ public class SWT { public static final int Gesture = 48; /** - * The get segments event type (value is 49). + * The segments event type (value is 49). * * <p> * This event is sent when text content has been changed. @@ -764,7 +764,7 @@ public class SWT { * * @since 3.8 */ - public static final int GetSegments = 49; + public static final int Segments = 49; /* Event Details */ diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentEvent.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentEvent.java index 9cdc0ca1a3..99d1b0f312 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentEvent.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentEvent.java @@ -70,26 +70,32 @@ import org.eclipse.swt.widgets.Event; */
public class SegmentEvent extends TypedEvent {
- /**
- * Text with respect to which segments are calculated
+
+ /**
+ * The start offset of the <code>lineText</code> relative to text (always zero for single line widget)
*/
- public String text;
+ public int lineOffset;
+
+ /**
+ * Text used to calculate the segments
+ */
+ public String lineText;
/**
- * Text ranges that should be treated as separate segments (e.g. for bidi
- * reordering)
+ * Text ranges that should be treated as separate segments (e.g. for bidi reordering)
*/
public int[] segments;
/**
- * Characters to be used in the segment boundaries (optional)
+ * Characters to be used in the segment boundaries (optional)
*/
public char[] segmentsChars;
- private static final long serialVersionUID = -89306787890624323L;
-
+ static final long serialVersionUID = -2414889726745247762L;
+
public SegmentEvent(Event e) {
super(e);
- text = e.text;
+ lineText = e.text;
+ lineOffset = e.detail;
}
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java index 5fa2be3f81..9b7ec29018 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/events/SegmentListener.java @@ -24,8 +24,9 @@ public interface SegmentListener extends SWTEventListener { * <p>
* The following event fields are used:<ul>
* <li>event.text text content (input)</li>
- * <li>event.segmentsChars characters that should be inserted</li>
- * <li>event.segments text offsets for segment characters</li></ul>
+ * <li>event.segmentsChars characters that should be inserted (output)</li>
+ * <li>event.segments text offsets for segment characters (output)</li>
+ * </ul>
*
* @param event the given event
* @see SegmentEvent
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java index 373dc389ec..ca560377ca 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/widgets/TypedListener.java @@ -149,13 +149,6 @@ public void handleEvent (Event e) { e.doit = event.doit; break; } - case SWT.GetSegments: { - SegmentEvent event = new SegmentEvent(e); - ((SegmentListener) eventListener).getSegments(event); - e.segments = event.segments; - e.segmentsChars = event.segmentsChars; - break; - } case SWT.Help: { ((HelpListener) eventListener).helpRequested (new HelpEvent (e)); break; @@ -241,6 +234,13 @@ public void handleEvent (Event e) { ((ControlListener) eventListener).controlResized(new ControlEvent(e)); break; } + case SWT.Segments: { + SegmentEvent event = new SegmentEvent(e); + ((SegmentListener) eventListener).getSegments(event); + e.segments = event.segments; + e.segmentsChars = event.segmentsChars; + break; + } case SWT.Selection: { /* Fields set by Sash */ SelectionEvent event = new SelectionEvent (e); 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 741822eb6c..aa1a2bc350 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 @@ -265,7 +265,7 @@ public void addModifyListener (ModifyListener listener) { public void addSegmentListener (SegmentListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); - addListener (SWT.GetSegments, new TypedListener (listener)); + addListener (SWT.Segments, new TypedListener (listener)); } /** @@ -361,18 +361,18 @@ public void append (String string) { int /*long*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle); OS.gtk_text_view_scroll_mark_onscreen (handle, mark); } - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } void applySegments () { - if (!hooks (SWT.GetSegments) && !filters (SWT.GetSegments)) return; + if (!hooks (SWT.Segments) && !filters (SWT.Segments)) return; Event event = new Event (); String string = getText (); event.text = string; event.segments = segments; - sendEvent (SWT.GetSegments, event); + sendEvent (SWT.Segments, event); segments = event.segments; if (segments == null) return; int nSegments = segments.length; @@ -397,6 +397,8 @@ void applySegments () { separator [0] = segmentsChars [i]; } byte [] buffer = Converter.wcsToMbcs (null, separator, false); + int /*long*/ ptr = OS.gtk_entry_get_text (handle); + pos = (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, pos); OS.gtk_editable_insert_text (handle, buffer, buffer.length, pos); } OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED); @@ -405,8 +407,13 @@ void applySegments () { OS.g_signal_handlers_block_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED); OS.g_signal_handlers_block_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, TEXT_BUFFER_INSERT_TEXT); byte [] pos = new byte [ITER_SIZEOF]; + byte [] startIter = new byte [ITER_SIZEOF]; + byte [] endIter = new byte [ITER_SIZEOF]; for (int i = 0; i < nSegments; i++) { - OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, pos, segments[i] + i); + OS.gtk_text_buffer_get_bounds (bufferHandle, startIter, endIter); + int /*long*/ ptr = OS.gtk_text_buffer_get_text (bufferHandle, startIter, endIter, true); + OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, pos, (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, segments[i] + i)); + OS.g_free (ptr); if (segmentsChars != null && segmentsChars.length > i) { separator [0] = segmentsChars [i]; } @@ -427,8 +434,12 @@ void clearSegments (boolean applyText) { OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED); if (applyText) { OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_TEXT); + int /*long*/ ptr = OS.gtk_entry_get_text (handle); + int start, end; for (int i = 0; i < nSegments; i++) { - OS.gtk_editable_delete_text (handle, segments[i], segments[i] + 1); + start = (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, segments[i]); + end = (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, segments[i] + 1); + OS.gtk_editable_delete_text (handle, start, end); } OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_TEXT); } @@ -439,10 +450,14 @@ void clearSegments (boolean applyText) { OS.g_signal_handlers_block_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED); OS.g_signal_handlers_block_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_RANGE); byte [] start = new byte [ITER_SIZEOF], end = new byte [ITER_SIZEOF]; + byte [] startIter = new byte [ITER_SIZEOF], endIter = new byte [ITER_SIZEOF]; for (int i = 0; i < nSegments; i++) { - OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, start, segments[i]); - OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, end, segments[i] + 1); + OS.gtk_text_buffer_get_bounds (bufferHandle, startIter, endIter); + int /*long*/ ptr = OS.gtk_text_buffer_get_text (bufferHandle, startIter, endIter, true); + OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, start, (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, segments[i])); + OS.gtk_text_buffer_get_iter_at_offset (bufferHandle, end, (int)/*64*/OS.g_utf16_offset_to_utf8_offset (ptr, segments[i] + 1)); OS.gtk_text_buffer_delete (bufferHandle, start, end); + OS.g_free (ptr); } OS.g_signal_handlers_unblock_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, DELETE_RANGE); OS.g_signal_handlers_unblock_matched (bufferHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, CHANGED); @@ -565,7 +580,7 @@ public void copy () { clearSegments (true); } OS.gtk_text_buffer_copy_clipboard (bufferHandle, clipboard); - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -593,7 +608,7 @@ public void cut () { clearSegments (true); } OS.gtk_text_buffer_cut_clipboard (bufferHandle, clipboard, OS.gtk_text_view_get_editable (handle)); - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -1660,7 +1675,7 @@ int /*long*/ gtk_insert_text (int /*long*/ widget, int /*long*/ new_text, int /* int /*long*/ gtk_key_press_event (int /*long*/ widget, int /*long*/ event) { boolean handleSegments = false, segmentsCleared = false; - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { GdkEventKey gdkEvent = new GdkEventKey (); OS.memmove (gdkEvent, event, GdkEventKey.sizeof); if (gdkEvent.length > 0 && (gdkEvent.state & (OS.GDK_MOD1_MASK | OS.GDK_CONTROL_MASK)) == 0) { @@ -1809,7 +1824,7 @@ public void insert (String string) { int /*long*/ mark = OS.gtk_text_buffer_get_insert (bufferHandle); OS.gtk_text_view_scroll_mark_onscreen (handle, mark); } - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -1858,7 +1873,7 @@ public void paste () { clearSegments (true); } OS.gtk_text_buffer_paste_clipboard (bufferHandle, clipboard, null, OS.gtk_text_view_get_editable (handle)); - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -1916,7 +1931,7 @@ public void removeModifyListener (ModifyListener listener) { public void removeSegmentListener (SegmentListener listener) { checkWidget (); if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); - eventTable.unhook (SWT.GetSegments, listener); + eventTable.unhook (SWT.Segments, listener); } /** @@ -2394,7 +2409,7 @@ void setText (char [] text) { OS.gtk_entry_set_icon_sensitive (handle, OS.GTK_ENTRY_ICON_SECONDARY, true); } } - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -2553,7 +2568,7 @@ String verifyText (String string, int start, int end) { } int /*long*/ windowProc (int /*long*/ handle, int /*long*/ user_data) { - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { switch ((int)/*64*/user_data) { case BACKSPACE: case COPY_CLIPBOARD: @@ -2575,7 +2590,7 @@ int /*long*/ windowProc (int /*long*/ handle, int /*long*/ user_data) { } int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ user_data) { - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { switch ((int)/*64*/user_data) { case DIRECTION_CHANGED: { if (segments != null) clearSegments (true); @@ -2588,7 +2603,7 @@ int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ us } int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ user_data) { - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { switch ((int)/*64*/user_data) { case DELETE_FROM_CURSOR: { if (segments != null) clearSegments (true); @@ -2604,7 +2619,7 @@ int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ ar } int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ user_data) { - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { switch ((int)/*64*/user_data) { case MOVE_CURSOR: { if (arg0 == OS.GTK_MOVEMENT_VISUAL_POSITIONS && segments != null) clearSegments (true); diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java index f7366cf6c1..78b6b271a5 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Text.java @@ -61,7 +61,6 @@ public class Text extends Scrollable { int[] segments; int clearSegmentsCount = 0; - // XXX The following two variables are also required for other widgets, move them to some shared space static final char LTR_MARK = '\u200e'; static final char RTL_MARK = '\u200f'; @@ -343,7 +342,7 @@ public void addModifyListener (ModifyListener listener) { public void addSegmentListener (SegmentListener listener) { checkWidget (); if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); - addListener (SWT.GetSegments, new TypedListener (listener)); + addListener (SWT.Segments, new TypedListener (listener)); } /** @@ -435,7 +434,7 @@ public void append (String string) { if (string == null) return; } OS.SendMessage (handle, OS.EM_SETSEL, length, length); - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { clearSegments (true); } TCHAR buffer = new TCHAR (getCodePage (), string, true); @@ -454,14 +453,14 @@ public void append (String string) { OS.SendMessage (handle, OS.EM_REPLACESEL, 0, buffer); ignoreCharacter = false; OS.SendMessage (handle, OS.EM_SCROLLCARET, 0, 0); - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } void applySegments () { if (--clearSegmentsCount != 0) return; - if (!hooks (SWT.GetSegments) && !filters (SWT.GetSegments)) return; + if (!hooks (SWT.Segments) && !filters (SWT.Segments)) return; int length = OS.GetWindowTextLength (handle); int cp = getCodePage (); TCHAR buffer = new TCHAR (cp, length + 1); @@ -471,7 +470,7 @@ void applySegments () { Event event = new Event (); event.text = string; event.segments = segments; - sendEvent (SWT.GetSegments, event); + sendEvent (SWT.Segments, event); segments = event.segments; if (segments == null) return; int nSegments = segments.length; @@ -1515,7 +1514,7 @@ public void insert (String string) { string = verifyText (string, start [0], end [0], null); if (string == null) return; } - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { clearSegments (true); } TCHAR buffer = new TCHAR (getCodePage (), string, true); @@ -1533,7 +1532,7 @@ public void insert (String string) { ignoreCharacter = true; OS.SendMessage (handle, OS.EM_REPLACESEL, 0, buffer); ignoreCharacter = false; - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { applySegments (); } } @@ -1652,7 +1651,7 @@ public void removeModifyListener (ModifyListener listener) { public void removeSegmentListener (SegmentListener listener) { checkWidget (); if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); - eventTable.unhook (SWT.GetSegments, listener); + eventTable.unhook (SWT.Segments, listener); } /** @@ -2242,7 +2241,7 @@ public void setText (String string) { string = verifyText (string, 0, length, null); if (string == null) return; } - boolean processSegments = segments != null || hooks (SWT.GetSegments) || filters (SWT.GetSegments); + boolean processSegments = segments != null || hooks (SWT.Segments) || filters (SWT.Segments); if (processSegments) clearSegments (false); int limit = (int)/*64*/OS.SendMessage (handle, OS.EM_GETLIMITTEXT, 0, 0) & 0x7FFFFFFF; if (string.length () > limit) string = string.substring (0, limit); @@ -2293,7 +2292,7 @@ public void setTextChars (char[] text) { text = new char [string.length()]; string.getChars (0, text.length, text, 0); } - boolean processSegments = segments != null || hooks (SWT.GetSegments) || filters (SWT.GetSegments); + boolean processSegments = segments != null || hooks (SWT.Segments) || filters (SWT.Segments); if (processSegments) clearSegments (false); int limit = (int)/*64*/OS.SendMessage (handle, OS.EM_GETLIMITTEXT, 0, 0) & 0x7FFFFFFF; if (text.length > limit) { @@ -2536,7 +2535,7 @@ int /*long*/ windowProc () { int /*long*/ windowProc (int /*long*/ hwnd, int msg, int /*long*/ wParam, int /*long*/ lParam) { boolean processSegments = false, redraw = false; int /*long*/ code; - if (hooks (SWT.GetSegments) || filters (SWT.GetSegments)) { + if (hooks (SWT.Segments) || filters (SWT.Segments)) { switch (msg) { case OS.EM_UNDO: case OS.WM_UNDO: |