| Summary: | [Accessibility] JAWS can not read label for multi-lines Text | ||
|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Naomi Miyamoto <nmiya> |
| Component: | SWT | Assignee: | Carolyn MacLeod <carolynmacleod4> |
| Status: | RESOLVED WORKSFORME | QA Contact: | |
| Severity: | major | ||
| Priority: | P3 | CC: | barry_dow, dipalerm, lding, Lmao, pombredanne, snorthov |
| Version: | 2.0 | Keywords: | accessibility |
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows 2000 | ||
| Whiteboard: | |||
JAWS associated labels with single line texts but not with multi line texts. The rationale is that the single line label is an entry field so a sibling label to the right of it is associated - no such association is made for a multi line text. The only way to label a multi line text is to put it into a GroupBox and label the GroupBox. This problem is completely fixed in the new JAWS 5.0 upgrade (5.00.809). To upgrade, see Frank DiPalermo's comment in bug 38194. Closing bug. I tried JAWS 5.00.846 and eclipse 3.0GM. JAWS can not read Label 2 of sample program. Rewrote the code snippet slightly for Lin.
Also, I tried it with JAWS 5.0 and JAWS 5.1, and the bug still exists - JAWS
does not read "Label 2:". The MSAA inspector *does* see "Label 2:" if I
ctrl+Tab into the second text control. (Can also use Alt+1, Alt+2, Alt+3 to
switch focus to the various text editors).
Here's the rewritten snippet:
package org.eclipse.swt.snippets;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
public class MultiLineTextTest {
static Display display;
static Shell shell;
static TabFolder tabFolder;
static Point maxSize;
static Composite selectedContents;
public static void main(String[] args) {
Display display = new Display();
shell = new Shell(display);
shell.setLayout(new GridLayout());
Label label1 = new Label(shell, SWT.NONE);
label1.setText("Label &1:");
Text commentText1 = new Text(shell, SWT.H_SCROLL |
SWT.V_SCROLL | SWT.BORDER);
Label label2 = new Label(shell, SWT.NONE);
label2.setText("Label &2:");
Text commentText2 = new Text(shell, SWT.H_SCROLL |
SWT.V_SCROLL | SWT.BORDER);
GridData gridData = new GridData();
gridData.widthHint = 200;
gridData.heightHint = 100;
commentText2.setLayoutData(gridData);
Label label3 = new Label(shell, SWT.NONE);
label3.setText("Label &3:");
Text commentText3 = new Text(shell, SWT.H_SCROLL |
SWT.V_SCROLL | SWT.BORDER);
shell.open();
while (!shell.isDisposed() ) {
if ( !display.readAndDispatch() ) {
display.sleep();
}
}
}
}
CAR if this is a bug in JAWS, make sure that FS knows about it and close it as WONTFIX (ie. CANTFIX). Thanks. Is anything going to be done about this? I am using JAWS 10 and RSA 7.5.3. We have a defect in our product which I am going to defer and refer to this bug. I just tried this with JAWS 14, and Label 2 is read correctly now. Marking this bug as "works for me". |
Environment : Windows 2000 + JAWS 4.02 JAWS can not read corresponding label when GridData is set to multi-lines Text widget. In the sample below, JAWS reads "Label 1" and "Label 3", but can not read "Label 2". //// sample ///// public class JAWSTest { Shell shell; public static void main(String[] args) { JAWSTest test = new JAWSTest(); test.open(); } void open() { Display display = new Display(); shell = new Shell(display); shell.setLayout(new GridLayout()); Label label1 = new Label(shell, SWT.NONE); label1.setText("Label &1:"); Text commentText1 = new Text(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); Label label2 = new Label(shell, SWT.NONE); label2.setText("Label &2:"); Text commentText2 = new Text(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); GridData gridData = new GridData(); gridData.widthHint = 200; gridData.heightHint = 100; commentText2.setLayoutData(gridData); Label label3 = new Label(shell, SWT.NONE); label3.setText("Label &3:"); Text commentText3 = new Text(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); shell.open(); while (!shell.isDisposed() ) { if ( !display.readAndDispatch() ) { display.sleep(); } } } }