diff options
author | Felipe Heidrich | 2010-04-09 15:33:19 +0000 |
---|---|---|
committer | Felipe Heidrich | 2010-04-09 15:33:19 +0000 |
commit | 2bd623aa2611ab4eaa4df944add1d7753d643585 (patch) | |
tree | 268099c724aa89e63e992049c8f82e08dc3f31b1 /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common | |
parent | e478c1393323532873f4afad237bfead8a929a28 (diff) | |
download | eclipse.platform.swt-2bd623aa2611ab4eaa4df944add1d7753d643585.tar.gz eclipse.platform.swt-2bd623aa2611ab4eaa4df944add1d7753d643585.tar.xz eclipse.platform.swt-2bd623aa2611ab4eaa4df944add1d7753d643585.zip |
fix for accessibility
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | 25 |
1 files changed, 22 insertions, 3 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 dae2a70b37..77da356ef4 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 @@ -6682,14 +6682,29 @@ void initializeAccessible() { public void getTextAttributes(AccessibleTextAttributeEvent e) { StyledText st = StyledText.this; int contentLength = st.getCharCount(); + if (!isListening(LineGetStyle) && st.renderer.styleCount == 0) { + e.start = 0; + e.end = contentLength; + return; + } int offset = Math.max(0, Math.min(e.offset, contentLength - 1)); int lineIndex = st.getLineAtOffset(offset); int lineOffset = st.getOffsetAtLine(lineIndex); - TextLayout layout = st.renderer.getTextLayout(lineIndex); + int lineLength = st.getContent().getLine(lineIndex).length(); + int lineCount = st.getLineCount(); offset = offset - lineOffset; + if (offset >= lineLength) { + e.start = lineOffset + lineLength; + if (lineIndex + 1 < lineCount) { + e.end = st.getOffsetAtLine(lineIndex + 1); + } else { + e.end = contentLength; + } + return; + } + TextLayout layout = st.renderer.getTextLayout(lineIndex); e.textStyle = layout.getStyle(offset); int[] ranges = layout.getRanges(); - int length = layout.getText().length(); st.renderer.disposeTextLayout(layout); int index = 0; int end = 0; @@ -6710,7 +6725,11 @@ void initializeAccessible() { } if (index == ranges.length) { e.start = lineOffset + end; - e.end = lineOffset + length; + if (lineIndex + 1 < lineCount) { + e.end = st.getOffsetAtLine(lineIndex + 1); + } else { + e.end = contentLength; + } } } }); |