*** empty log message ***
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java
index b4cd066..f0a9d6b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/graphics/TextLayout.java
@@ -963,7 +963,7 @@
OS.ATSUNextCursorPosition(layout, offset, type, newOffset);
offset = newOffset[0];
newOffset[0] = untranslateOffset(newOffset[0]);
- if (movement == SWT.MOVEMENT_WORD) {
+ if (movement == SWT.MOVEMENT_WORD || movement == SWT.MOVEMENT_WORD_END) {
while (newOffset[0] < length &&
(!(!Compatibility.isLetterOrDigit(text.charAt(newOffset[0])) &&
Compatibility.isLetterOrDigit(text.charAt(newOffset[0] - 1))))) {
@@ -972,11 +972,20 @@
newOffset[0] = untranslateOffset(newOffset[0]);
}
}
+ if (movement == SWT.MOVEMENT_WORD_START) {
+ while (newOffset[0] < length &&
+ (!(Compatibility.isLetterOrDigit(text.charAt(newOffset[0])) &&
+ !Compatibility.isLetterOrDigit(text.charAt(newOffset[0] - 1))))) {
+ OS.ATSUNextCursorPosition(layout, offset, type, newOffset);
+ offset = newOffset[0];
+ newOffset[0] = untranslateOffset(newOffset[0]);
+ }
+ }
} else {
OS.ATSUPreviousCursorPosition(layout, offset, type, newOffset);
offset = newOffset[0];
newOffset[0] = untranslateOffset(newOffset[0]);
- if (movement == SWT.MOVEMENT_WORD) {
+ if (movement == SWT.MOVEMENT_WORD || movement == SWT.MOVEMENT_WORD_START) {
while (newOffset[0] > 0 &&
(!(Compatibility.isLetterOrDigit(text.charAt(newOffset[0])) &&
!Compatibility.isLetterOrDigit(text.charAt(newOffset[0] - 1))))) {
@@ -985,6 +994,15 @@
newOffset[0] = untranslateOffset(newOffset[0]);
}
}
+ if (movement == SWT.MOVEMENT_WORD_END) {
+ while (newOffset[0] > 0 &&
+ (!(!Compatibility.isLetterOrDigit(text.charAt(newOffset[0])) &&
+ Compatibility.isLetterOrDigit(text.charAt(newOffset[0] - 1))))) {
+ OS.ATSUPreviousCursorPosition(layout, offset, type, newOffset);
+ offset = newOffset[0];
+ newOffset[0] = untranslateOffset(newOffset[0]);
+ }
+ }
}
return newOffset[0];
}