diff options
author | Felipe Heidrich | 2010-04-09 14:38:14 +0000 |
---|---|---|
committer | Felipe Heidrich | 2010-04-09 14:38:14 +0000 |
commit | e478c1393323532873f4afad237bfead8a929a28 (patch) | |
tree | 0c1bcbb75fa70575fbad4770d97b508354f32d1e /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | |
parent | 54a339f69ab201fd4151c46c05efb9f76a34fba3 (diff) | |
download | eclipse.platform.swt-e478c1393323532873f4afad237bfead8a929a28.tar.gz eclipse.platform.swt-e478c1393323532873f4afad237bfead8a929a28.tar.xz eclipse.platform.swt-e478c1393323532873f4afad237bfead8a929a28.zip |
fix for accessibility
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java index 0ccdc4aa20..dae2a70b37 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java @@ -6689,17 +6689,29 @@ void initializeAccessible() { offset = offset - lineOffset; e.textStyle = layout.getStyle(offset); int[] ranges = layout.getRanges(); + int length = layout.getText().length(); + st.renderer.disposeTextLayout(layout); int index = 0; + int end = 0; while (index < ranges.length) { - int start = ranges[index++]; - int end = ranges[index++]; - if (start <= offset && offset <= end) { - e.start = lineOffset + start; - e.end = lineOffset + end + 1; - break; + int styleStart = ranges[index++]; + int styleEnd = ranges[index++]; + if (styleStart <= offset && offset <= styleEnd) { + e.start = lineOffset + styleStart; + e.end = lineOffset + styleEnd + 1; + return; } + if (styleStart > offset) { + e.start = lineOffset + end; + e.end = lineOffset + styleStart; + return; + } + end = styleEnd + 1; + } + if (index == ranges.length) { + e.start = lineOffset + end; + e.end = lineOffset + length; } - st.renderer.disposeTextLayout(layout); } }); accessible.addAccessibleControlListener(new AccessibleControlAdapter() { |