Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Heidrich2010-04-09 15:33:19 +0000
committerFelipe Heidrich2010-04-09 15:33:19 +0000
commit2bd623aa2611ab4eaa4df944add1d7753d643585 (patch)
tree268099c724aa89e63e992049c8f82e08dc3f31b1 /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common
parente478c1393323532873f4afad237bfead8a929a28 (diff)
downloadeclipse.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-xbundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java25
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;
+ }
}
}
});

Back to the top